diff --git a/fr/projects/busdma/index.sgml b/fr/projects/busdma/index.sgml new file mode 100644 index 0000000000..5e7762a1bd --- /dev/null +++ b/fr/projects/busdma/index.sgml @@ -0,0 +1,1095 @@ + + + + + %includes; + + +Fait"> +En progrès"> +Pas fait"> +Résolu"> +Non résolu"> + + + + %developers; + +]> + + + + + &header; + +
busdma
+Les interfaces busdma permettent aux pilotes de périphériques matériels + d'opérer sur une variété de plateformes, évitant le codage de méthodes + spécifiques à la plateforme dans ces pilotes. Ceci fait baisser le coût de + la maintenance des pilotes sur ces plateformes et accroît les chances qu'un + pilote fonctionne "tel que" pour une nouvelle plateforme. Modifier un pilote + pour qu'il utilise busdma est relativement simple, mais requiert d'être familiarisé à + la fois avec le pilote de périphérique et les primitives busdma. + Pour utiliser busdma dans FreeBSD, deux types de changements sont généralement requis : + l'adaptation de busdma pour fonctionner sur toutes les plateformes et + l'adaptation des pilotes pour utiliser cet environnement de travail. En tant que telle, + l'information actuelle de ce projet de décompose en support de la plateforme + et en support des pilotes (triés par catégorie). L'achèvement de ce travail + requiert l'audit complet du système de pilotes de périphériques, puis la + conversion des pilotes par priorités.
+ +INTR_MPSAFE
+Les pilotes du matériel enregistrent leur traitement d'interruptions
+ avec la fonction bus_setup_intr()
. Positionner le flag
+ INTR_MPSAFE
informe le code d'interruption système d'appeler
+ la routine d'interruption sans détenir le mutex "Géant". Ceci permet d'obtenir
+ un gain significatif de performances sur les systèmes multi-processeurs.
Les pilotes peuvent positionner ce flag même s'ils ne sont pas complètement + verrouillés tant que leur routine d'interruption prend soin de ne pas toucher + aux autres structures de données du pilote. Un moyen simple de réaliser cela est + de vérifier et de vider les registres d'interruptions matérielles et ensuite + ordonnancer le traitement des interruptions par une file d'attente de tâches ou + un thread noyau.
+ +verrou SMPng
+Les pilotes doivent utiliser des mutex et des verrous sx pour protéger + leurs structures de données et registres matériels des threads concurrents. + Les opérations mutex sont assez coûteuses, aussi une bonne stratégie + devrait combiner autant d'opérations atomiques que possible durant l'acquisition + d'un seul mutex.
+ +sécurité p!=a
+Le support du PAE Intel requiert que les pointeurs et les représentations + physiques des adresses soient de tailles différentes. Cela signifie que les + pilotes doivent être écrits en utilisant vm_paddr_t ou bus_addr_t plutôt + qu'en supposant que les adresses physiques puissent être représentées par un + void *. De plus, le format des chaînes de caractères et les casts doivent + être manipulés avec soin.
+ +La liste des tâches ci-dessous ne prétend pas être exhaustive, mais + représente une série de composants appropriés et/ou importants du + travail global. Le champ "Responsable" identifie un développeur qui a + exprimé le désir d'être responsable pour mener à bien la tâche identifiée; + ce qui n'empêche pas les autres d'y travailler, mais suggère que la + coordination avec le responsable de cette partie est recommandée pour éviter + la duplication des travaux et optimiser l'avancement du travail. Si des + travaux débutent sur une nouvelle partie importante, ou non assignée, + il est conseillé d'envoyer un courrier électronique à &a.mux; pour vérifier + si des progrès n'ont pas déjà été faits.
+ +La définition du champ date varie en fonction de l'état de la tâche. + Pour les tâches achevées, elle se réfère à la date d'achèvement ou du + rapport d'achèvement. Pour les tâches en cours, elle se réfère à la + date de la dernière mise à jour de l'entrée. Pour les tâches bloquées, + elle se réfère à la date à laquelle elle a été déclarée bloquée. Pour les nouvelles + tâches, elle se réfère à la date à laquelle elle a été ajoutée à la liste.
+ +Les tâches sont triées par état, puis par date.
+ + +Tâche | +Responsable | +Dernière mise à jour | +Etat | +Détails | +|
---|---|---|---|---|---|
alpha | +&a.gallatin; | +10 Décembre 2002 | +&status.done; | +Problèmes éventuels avec les systèmes disposant d'une + grande quantité de mémoire | +|
amd64 | +&a.peter; | +1er Juillet 2003 | +&status.done; | +Pleinement supporté. | +|
ia64 | +&a.marcel; | +10 Décembre 2002 | + | &status.done; | +Problèmes éventuels avec les systèmes disposant d'une + grande quantité de mémoire | +
i386 | +&a.sam; | +9 Décembre 2002 | +&status.done; | +Pleinement supporté. | +|
powerpc | +&a.hmp; | +15 Janvier 2003 | +&status.done; | +Pleinement supporté. | +|
sparc64 | +&a.tmm; | +6 Janvier 2003 | +&status.done; | +Pleinement supporté. | +
Pilote | +Responsable | +Dernière mise à jour | +busdma | +INTR_MPSAFE | +SMPng locked | +a!=p | +Notes | +|
---|---|---|---|---|---|---|---|---|
if_ar | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +kvtop() | +|
if_bge | +&a.will; | +2 Juillet 2003 | +&status.wip; | +&status.new; | +&status.new; | +&status.done; | +vtophys() | +|
if_cs | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_dc | +&a.mux; | +17 Avril 2003 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_de | +&a.mux; | ++ | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +|
if_ed | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +kvtop() | +|
if_em | +&a.pdeuskar; | +19 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.done; | ++ | |
if_en | +&a.harti; | +4 Mars 2003 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_fxp | +&a.mux; | +9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.done; | ++ | |
if_fwe | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_gem | +&a.tmm; | +6 Janvier 2003 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_gx | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +|
if_hme | +&a.tmm; | +6 Janvier 2003 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_idt | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +|
if_lge | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +|
if_lmc | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +|
if_lnc | +&a.obrien; | ++ | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys(). Contactez &a.phk; pour info/matériel svp. | +|
if_mn | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys(). Contactez &a.phk; pour info/matériel svp. | +|
if_my | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +|
if_nge | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +|
if_pcn | +&a.obrien; | ++ | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +|
if_pdq | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +la plupart du busdma sauf vtophys() | +|
if_rl | +&a.wpaul; | +9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_sf | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +|
if_sis | +&a.wpaul; | +9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_sk | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +|
if_sr | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +|
if_ste | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +|
if_ti | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_tl | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_tx | +&a.mux; | +19 Avril 2003 | +&status.done; | +&status.new; | +&status.new; | +&status.done; | +vtophys() | +|
if_txp | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_vr | +Christian S.J. Peron <maneo@bsdpro.com> | +20 Janvier 2003 | +&status.wip; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_wb | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | ++ | |
if_xl | +&a.mux; | +17 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.done; | ++ |
Pilote | +Responsable | +Dernière mise à jour | +busdma | +INTR_MPSAFE | +SMPng locked | +a!=p | +Notes | +
---|---|---|---|---|---|---|---|
aac | +&a.scottl; | +8 Février 2003 | +&status.done; | +&status.done; | +&status.done; | +&status.done; | +compatible PCI-64, problème avec architecture endian | +
adv | ++ | 9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
aha | ++ | 9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
ahb | ++ | 9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
aic7xxx | ++ | 9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
amd | ++ | 14 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
amr | ++ | 9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
asr | +&a.obrien; | +4 Janvier 2003 | +&status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
ata | ++ | 9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.done; | ++ |
buslogic | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
ciss | ++ | 9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
ct | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | ++ |
dpt | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
ida | ++ | 9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
iir | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
isp | ++ | 8 Février 2003 | +&status.done; | +&status.done; | +&status.new; | +&status.new; | ++ |
mlx | +&a.scottl; | +8 Février 2003 | +&status.done; | +&status.wip; | +&status.wip; | +&status.new; | ++ |
mly | +&a.scottl; | +8 Février 2003 | +&status.done; | +&status.wip; | +&status.wip; | +&status.new; | ++ |
mpt | ++ | 9 Décembre 2002 | +&status.done; | +&status.done; | +&status.new; | +&status.new; | ++ |
ncr | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys(). Contactez &a.phk; svp, pour une éventuelle source + de matériel. | +
pst | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
stg | ++ | 9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | +Au moins, il semble être ce qu'il devrait être. | +
sym | ++ | 19 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
trm | +&a.cognet; | +9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
twe | ++ | 9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
Pilote | +Responsable | +Dernière mise à jour | +busdma | +INTR_MPSAFE | +SMPng locked | +a!=p | +Notes | +
---|---|---|---|---|---|---|---|
agp | +&a.cognet; | +23 Janvier 2003 | +&status.wip; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
bktr | +&a.cognet; | +15 Janvier 2003 | +&status.wip; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
cs | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | ++ |
digi | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
drm | +&a.anholt; | +17 Février 2003 | +&status.wip; | +&status.wip; | +&status.wip; | +&status.new; | +vtophys() | +
exca | +&a.imp; | +9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
fb | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
firewire | +&a.simokawa; | +17 Avril 2003 | +&status.done; | +&status.new; | +&status.new; | +&status.done; | +vtophys() | +
hea | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
hfa | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
hifn | +&a.sam; | +9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
meteor | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
musycc | ++ | + | &status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys(). Contactez &a.phk; pour info/matériel svp. | +
pcm | +&a.cognet; | +20 Février 2003 | +&status.done; | +&status.done; | +&status.new; | +&status.new; | ++ |
ubsec | +&a.sam; | +9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | +vtophys() est utilisé par printf en débuggage | +
usb | +&a.dwhite; | +1er Juillet 2003 | +&status.new; | +&status.new; | +&status.new; | +&status.new; | +vtophys() | +
wds | ++ | 9 Décembre 2002 | +&status.done; | +&status.new; | +&status.new; | +&status.new; | ++ |
Tâche | +Responsable | +Dernière mise à jour | +Etat | +Notes | +
---|---|---|---|---|
Pages de manuel pour l'API busdma | +&a.hmp; | +15 Janvier 2003 | +&status.done; | ++ |