Various fixes, more changes soon.
This commit is contained in:
parent
cbbbe65b73
commit
3009fbaa52
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=15617
1 changed files with 29 additions and 29 deletions
|
@ -1,34 +1,34 @@
|
|||
<!--
|
||||
The FreeBSD Documentation Project
|
||||
The FreeBSD French Documentation Project
|
||||
|
||||
$Id: chapter.sgml,v 1.1 2002-02-14 14:25:02 gioria Exp $
|
||||
Original revision: 1.5
|
||||
|
||||
$FreeBSD$
|
||||
$Id: chapter.sgml,v 1.2 2003-01-12 12:16:07 blackend Exp $
|
||||
Original revision: 1.5
|
||||
|
||||
-->
|
||||
|
||||
<chapter id="driverbasics">
|
||||
<title>Ecrire des pilotes de périphériques pour FreeBSD</title>
|
||||
|
||||
<para>Ce chapître a été écrit par &.murray avec des sélections
|
||||
depuis une variété de codes source inclus dans la page de manuel d'intro(4) de Joerg
|
||||
<para>Ce chapître a été écrit par &a.murray; avec des sélections
|
||||
depuis une variété de codes source inclus dans la page de manuel d'&man.intro.4; de Joerg
|
||||
Wunsch.</para>
|
||||
|
||||
<sect1>
|
||||
<title>Introduction</title>
|
||||
<para>Ce chapître fournit une brêve introduction sur l'écriture
|
||||
de pilotes de périphériques pourFreeBSD.
|
||||
<para>Ce chapître fournit une brêve introduction sur l'écriture
|
||||
de pilotes de périphériques pour FreeBSD.
|
||||
Un périphérique, dans ce contexte, est un terme utilisé
|
||||
le plus souvent pour tout ce qui est lié au matériel et qui dépend
|
||||
du système, comme les disques, imprimantes, ou un écran avec son clavier.
|
||||
Un pilote de périphérique est un composant logiciel du système
|
||||
d'exploitation qui contrôle un périphérique spécifique. Il y a aussi
|
||||
ce que l'on apelle les pseudo-périphériques ("pseudo-devices") où un pilote
|
||||
ce que l'on apelle les pseudo-périphériques (“pseudo-devices”) où un pilote
|
||||
de périphérique émule le comportement d'un périphérique dans un logiciel sans
|
||||
matériel particulier sous-jacent. Les pilotes de périphériques peuvent être compilés
|
||||
dans le ystème statiquement ou chargé à la demande via l'éditeur de liens dynamique du
|
||||
noyau `kld'.</para>
|
||||
noyau “kld”.</para>
|
||||
|
||||
<para>La plupart des périphériques dans un système d'exploitation de type Unix
|
||||
sont accessibles au travers de fichiers spéciaux de périphérique (device-nodes), appelés parfois
|
||||
|
@ -45,7 +45,7 @@
|
|||
|
||||
<sect1>
|
||||
<title>L'éditeur de liens dynamiques du noyau - KLD</title>
|
||||
<!-- Traduction à vérifier
|
||||
<!-- Traduction à vérifier
|
||||
Dynamic Kernel Linker Facility - KLD</title> -->
|
||||
|
||||
<para>L'interface kld permet aux administrateurs système d'ajouter
|
||||
|
@ -55,7 +55,7 @@
|
|||
</para>
|
||||
|
||||
<para>L'interface kld est utilisé au travers des commandes d'administrateur suivantes :
|
||||
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><simpara><command>kldload</command> - charge un nouveau module dans le noyau</simpara></listitem>
|
||||
<listitem><simpara><command>kldunload</command> - décharge un module du noyau</simpara></listitem>
|
||||
|
@ -66,18 +66,18 @@
|
|||
<para>Structure squelettique d'un module de noyau</para>
|
||||
|
||||
<programlisting>/*
|
||||
* Squelette KLD
|
||||
* Squelette KLD
|
||||
* Inspiré de l'article d'Andrew Reiter paru sur Daemonnews
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/module.h>
|
||||
#include <sys/systm.h> /* uprintf */
|
||||
#include <sys/systm.h> /* uprintf */
|
||||
#include <sys/errno.h>
|
||||
#include <sys/param.h> /* defines utilise dans kernel.h */
|
||||
#include <sys/kernel.h> /* types utilise dans le module d'initialisation */
|
||||
|
||||
/*
|
||||
/*
|
||||
* charge le gestionnaire quit traite du chargement et déchargement d'un KLD.
|
||||
*/
|
||||
|
||||
|
@ -85,7 +85,7 @@ static int
|
|||
skel_loader(struct module *m, int what, void *arg)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
|
||||
switch (what) {
|
||||
case MOD_LOAD: /* kldload */
|
||||
<!-- Désolé, les accents n'existent pas dans la console alors je ne les ai pas mis là non plus
|
||||
|
@ -131,7 +131,7 @@ KMOD=skeleton
|
|||
<sect1>
|
||||
<title>Accéder au pilote d'un périphérique</title>
|
||||
|
||||
<para>Unix fournit un ensemble d'appels sytème communs utilisable par
|
||||
<para>Unix fournit un ensemble d'appels sytème communs utilisable par
|
||||
les applications de l'utilisateur. Les couches supérieures du noyau renvoient
|
||||
ces appels au pilote de périphérique correspondant quand un utilisateur
|
||||
accède au fichier spécial de périphérique. Le script <command>/dev/MAKEDEV</command>
|
||||
|
@ -145,7 +145,7 @@ KMOD=skeleton
|
|||
|
||||
<para>La commande <command>mknod</command> nécessite quatre
|
||||
arguments pou créer un fichier spécial de périphérique. Vous devez spécifier le nom
|
||||
de ce fichier spécial de périphérique, le type de périphérique, le numéro majeur
|
||||
de ce fichier spécial de périphérique, le type de périphérique, le numéro majeur
|
||||
et le numéro mineur du périphérique.</para>
|
||||
</sect2>
|
||||
|
||||
|
@ -169,7 +169,7 @@ KMOD=skeleton
|
|||
l'arbre des sources.</para>
|
||||
|
||||
<para>Cet exemple simple de pseudo-périphérique enregistre toutes les valeurs
|
||||
que vous lui avez écrites et peut vous les renvoyer quand vous les lui
|
||||
que vous lui avez écrites et peut vous les renvoyer quand vous les lui
|
||||
demandez.</para>
|
||||
|
||||
<programlisting>/*
|
||||
|
@ -182,7 +182,7 @@ KMOD=skeleton
|
|||
|
||||
#include <sys/types.h>
|
||||
#include <sys/module.h>
|
||||
#include <sys/systm.h> /* uprintf */
|
||||
#include <sys/systm.h> /* uprintf */
|
||||
#include <sys/errno.h>
|
||||
#include <sys/param.h> /* defines utilises dans kernel.h */
|
||||
#include <sys/kernel.h> /* types utilises dans me module d'initialisation */
|
||||
|
@ -235,12 +235,12 @@ MALLOC_DEFINE(M_ECHOBUF, "echobuffer", "cache pour le module echo");
|
|||
* determiner quelles actions doivent etre faites quand le
|
||||
* module est charge ou decharge
|
||||
*/
|
||||
|
||||
|
||||
static int
|
||||
echo_loader(struct module *m, int what, void *arg)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
|
||||
switch (what) {
|
||||
case MOD_LOAD: /* kldload */
|
||||
sdev = make_dev(<literal>&</literal>echo_cdevsw,
|
||||
|
@ -266,27 +266,27 @@ echo_loader(struct module *m, int what, void *arg)
|
|||
return(err);
|
||||
}
|
||||
|
||||
int
|
||||
int
|
||||
echo_open(dev_t dev, int oflags, int devtype, struct proc *p)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
|
||||
uprintf("Peripherique \"echo\" ouvert avec succes.\n");
|
||||
return(err);
|
||||
}
|
||||
|
||||
int
|
||||
int
|
||||
echo_close(dev_t dev, int fflag, int devtype, struct proc *p)
|
||||
{
|
||||
uprintf("Fermeture du peripherique \"echo.\"\n");
|
||||
uprintf("Fermeture du peripherique \"echo.\"\n");
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* La fonction read prend juste comme parametre
|
||||
* le cache qui a ete sauve par l'appel à echo_write()
|
||||
* et le retourne a l'utilisateur pour acces.
|
||||
* uio(9)
|
||||
* uio(9)
|
||||
*/
|
||||
|
||||
int
|
||||
|
@ -373,7 +373,7 @@ DEV_MODULE(echo,echo_loader,NULL);</programlisting>
|
|||
pouvoir être acessibles. Leur sélection est basée sur d'autres décisions
|
||||
faites à l'intérieur du noyau et plutôt que d'appeler open(), l'utilisation
|
||||
d'un périphérique réseau se fait généralement en se servant de l'appel système
|
||||
socket(2).</para>
|
||||
&man.socket.2;.</para>
|
||||
|
||||
<para>man ifnet(), périphérique "en boucle", drivers de Bill Paul,
|
||||
etc..</para>
|
||||
|
|
Loading…
Reference in a new issue