IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

ldd3

Date de publication : 19/07/2007 , Date de mise à jour : 19/07/2007


II. Préface
II-1. Introduction de Jon
II-2. Introduction d'Alessandro
II-3. Introduction de Greg
II-4. Assistance pour ce livre
II-5. Organisation du matériel
II-6. Instructions de fond
II-7. Version en ligne et licence
II-8. Conventions utilisées dans ce livre
II-9. Utilisation des exemples de code
II-10. Nous aimerions avoir vos retours
II-11. Safari activé
II-12. Remerciements
II-12-1. Jon
II-12-2. Alessandro
II-12-3. Greg


II. Préface

Ceci est, en apparence, un livre traitant de l'écriture de pilotes de périphériques pour le système Linux. C'est un objectif louable, bien évidemment. La sortie de nouveaux périphériques n'est pas prête de diminuer de sitôt, et quelqu'un devra faire fonctionner tous ces nouveaux gadgets sous Linux. Mais ce livre traite aussi du noyau Linux et de comment adapter son fonctionnement à ses besoins. Linux est un système ouvert. Avec ce livre, nous espérons, qu'il deviendra encore plus ouvert et accessible à la communauté des développeurs.

Ceci est la troisième édition de "LDD". Le noyau a considérablement évolué depuis la première édition de ce livre, et nous avons essayé de faire évoluer le texte afin qu'il prenne en compte ces changements. Cette édition couvre la version 2.6.10 du noyau le plus complètement possible. Nous avons décidé d'abandonner les discussions de rétro-compatibilité avec les anciennes versions du noyau. Les changements depuis la version 2.4 sont tout simplement trop importants, mais la version 2.4 reste toujours bien documentée dans la deuxième édition de ce livre (disponible gratuitement).

Cette édition contient de nombreuses nouvelles informations relatives au noyau 2.6. La discussion sur le verrouillage et la concurrence a été étoffé et fait maintenant l'objet d'un chapitre à part entière. Le modèle de périphériques de Linux, nouveauté du noyau 2.6, est traité en détail. Il y a de nouveaux chapitres sur les pilotes USB et le sous-système de pilotes série ; le chapitre sur les pilotes PCI a été étendu. Bien que l'organisation du reste du livre ressemble à celle des précédentes éditions, chaque chapitre a été entièrement remis à jour.

Nous espérons que vous aimerez lire ce livre, au moins autant que nous avons aimé l'écrire.


II-1. Introduction de Jon

La publication de cette édition coïncide avec ma douzième année de travail avec Linux et, oh ! horreur ! ma vingt-cinquième année dans le domaine de l'informatique. L'informatique semblait être un domaine en rapide évolution en 1980, mais les choses se sont encore nettement accélérées depuis. Maintenir LDD à jour est devenu de plus en plus un défi; les développeurs du noyau Linux continuent à améliorer leur code, mais font peu de cas de la documentation, qui a donc du mal à suivre.

Linux poursuit sa percée, et, encore plus important, dans le coeur et dans l'esprit des développeurs du monde entier. Le succès de Linux témoigne de sa qualité technique et des nombreux avantages du logiciel libre. Mais la véritable clé de son succès, selon moi, repose sur le fait qu'il a réintroduit l'amusement dans l'informatique. Avec Linux, n'importe qui peut se plonger dans le système et jouer dans un bac à sable où toutes les contributions, d'où qu'elles viennent, sont les bienvenues, mais aussi où l'excellence technique prime sur tout. Linux nous fournit non seulement un système d'exploitation de qualité mais il nous donne l'opportunité de participer à son développement et de s'amuser en le faisant...

Dans ces 25 ans d'expérience, j'ai eu l'occasion de faire et voir de nombreuses choses, depuis la programmation sur le premier ordinateur Cray (en Fortran, sur des cartes perforées) jusqu'au balbutiement du mini-ordinateur et des stations de travail Unix, jusqu'à maintenant, l'ère de la domination du microprocesseur. Jamais, cependant, je n'ai jamais vu un domaine aussi plein de vie, d'opportunités et d'amusement. Jamais nous n'avons eu un tel contrôle sur nos outils et leur évolutions. Linux, et le logiciel libre en général, est le moteur de ces changements.

Mon espoir dans cette édition est qu'elle puisse aider de nouveaux développeurs à prendre du plaisir et avoir de nouvelles opportunités. Que votre intérêt soit dans le noyau ou dans les applications, j'espère que ce livre sera utile et intéressant pour savoir comment fonction le noyau avec le matériel. J'espère qu'il vous aidera et vous incitera à vous jeter sur votre éditeur et faire en sorte de rendre notre système d'exploitation meilleur. Linux existe depuis un moment, mais il n'en est qu'au début ; il sera plus qu'intéressant de regarder - et participer - à son évolution.


II-2. Introduction d'Alessandro

J'ai toujours aimé les ordinateurs parce qu'ils peuvent communiquer avec le matériel qui les entoure. Après avoir soudé mes périphériques pour l'Apple II et le ZXSpectrum, grâces aux compétences sur Unix et les logiciels libres que l'université m'a donné, j'ai pu échapper au piège de DOS en installant le système GNU/Linux sur un 386 et ainsi pu remettre en marche le fer à souder.

A l'époque, la communauté était toute petite et il n'y avait pas beaucoup de document sur l'écriture de pilotes, alors j'ai commencé à écrire pour le Linux Journal. C'est comme ceci que les choses ont commencées : quand j'ai découvert que je n'aimait pas écrire des articles, j'ai quitté l'université et je me suis retrouvé avec un contrat avec O'Reilly entre les mains.

C'était en 1996. Il y a très longtemps.

Le monde informatique est différent maintenant : les logiciels libres semblent être une solution viable, à la fois techniquement et politiquement, mais il y a beaucoup de travail à faire dans les deux domaines. J'espère que ce livre permet de poursuivre deux buts : diffuser les connaissances techniques et faire sentir le besoin de la diffusion des connaissances. C'est pourquoi, après que la première édition ait montré l'intérêt du public, les deux auteurs de la deuxième édition ont basculé vers une licence libre, soutenu par notre maison d'édition. Je suis sur que ceci est la bonne approche, et que cela va nous permettre de faire équipe avec des gens qui partagent cette vision.

Je suis excité d'être le témoin de l'ère de l'embarqué, et j'espère que ce livre aidera à aller encore plus loin; mais les idées vont très vite, et il est déjà l'heure de penser à la quatrième édition, et partir à la recherche d'un quatrième auteur pour nous aider.


II-3. Introduction de Greg

Il y a quelques temps, j'ai pris la première édition de LDD afin de comprendre comment écrire un vrai pilote pour Linux. Cette première édition était un bon guide pour m'aider à comprendre le fonctionnement interne de ce système d'exploitation que j'utilisais depuis un bon nombre d'années mais dont je n'avais jamais pris le temps de regarder la manière dont il fonctionnait. Avec les nouvelles connaissances gagnées à travers ce livre et grâce à la lecture d'autres codes de programmeurs déjà présents dans le noyau. Mon premier pilote, bien qu'horriblement buggé et peu sûr dans un environnement SMP fut accepté par la communauté des développeurs du noyau et intégré à la branche principale de développement. Malgré avoir reçu un rapport de bug cinq minutes plus tard, j'étais accroché au désir de faire ce que je pouvais pour que ce système d'exploitation soit le meilleur possible.

Je suis honoré d'avoir eu la capacité de contribuer à ce livre. J'espère qu'il permettra à d'autres d'apprendre les particularités du noyau, de découvrir que le développement de pilote n'est pas effrayant ou interdit et encourage peut-être les autres à nous rejoindre et nous aide dans l'effort collectif de faire que ce système d'exploitation fonctionne sur chaque ordinateur avec n'importe quel type de périphérique disponible. La procédure de développement est amusante, la communauté gratifiante, et tout le monde bénéficie des efforts investis.

Maintenant il est temps de rendre cette édition obsolète en corrigeant les bugs, changeant les APIs pour mieux travailler et que ça soit plus simple pour tout le monde, ajoutant de nouvelles caractéristiques. Nous pouvons toujours utiliser cette aide.


II-4. Assistance pour ce livre

Ce livre devrait être une source d'informations intéressante pour les gens qui veulent expérimenter avec leur ordinateur et pour les codeurs qui font face au besoin de traiter avec les niveaux « intérieurs » d'une boîte Linux. Noter que « une boîte Linux » est un concept plus large que « un PC tournant sous Linux », étant donné que plusieurs plates-formes sont supportées par notre système d'exploitation., et que la programmation du noyau ne doit en aucun cas être spécifique à une plate-forme. Nous espérons que ce livre sera un point de départ pour les personnes désirant devenir des experts développeurs du noyau mais ne savent pas par où commencer.

Côté technique, ce texte devrait offrir une approche pratique afin de comprendre le fonctionnement interne du noyau et certains des choix faits par les développeurs Linux. Bien que le principal et officiel objectif de ce livre est d'apprendre à écrire des pilotes de périphériques, ce document devrait vous donner un intéressant aperçu de la mise en oeuvre du noyau.

Bien que les vrais experts peuvent trouver toutes les informations nécessaires dans les sources du noyau principal, habituellement un texte écrit peut être utile dans le développement des compétences informatiques. Le livre que vous abordez est le résultat de nombreuses heures d'études dans les sources du noyau, et nous espérons que le résultat final est à la hauteur des efforts fournis.

L'adepte de Linux devrait trouver en ce livre assez de nourriture pour que son esprit commence à jouer avec la base du code et devrait pouvoir joindre le groupe de développeurs qui travaillent sans interruption à de nouvelles possibilités et l'amélioration des performances. Ce livre ne couvre pas le noyau Linux dans son intégralité, bien sûr, mais les auteurs de LDD ont besoin de savoir comment fonctionne chaque sous-ensemble du noyau. Par conséquent, il donne une bonne introduction à la programmation générale du noyau. Linux est en continuel développement et il y a toujours une place pour un nouveau codeur qui veut entrer dans le jeu.

Si, d'un autre côté, vous êtes juste en train d'essayer d'écrire un pilote pour votre périphérique et que vous ne voulez pas intégrer ce dernier dans le noyau, le texte devrait être assez modulable pour pouvoir l'adapter vos besoins. Si vous ne voulez pas rentrer dans les détails, vous pouvez juste passer les sections les plus techniques et vous attarder sur l'API standard utilisée par les pilotes pour s'intégrer avec le reste du noyau.


II-5. Organisation du matériel

Ce livre introduit ses sujets par ordre croissant de difficulté et est divisé en deux parties. La première partie (Chapitre 1-11) commence par l'installation correcte des modules noyau et continue avec la description de différents aspects de programmation dont vous aurez besoin pour écrire un pilote pleinement fonctionnel pour un périphérique de type caractère. Chacun des chapitres couvre un problème différent et inclut un bref résumé à la fin, qui peut être utilisé comme une référence.

Tout au long du livre, nous passerons des concepts orientés logiciels aux concepts matériels. Cette organisation a pour but de vous permettre de tester le logiciel sans avoir à connecter un périphérique externe à votre machine. Chaque chapitre contient des codes sources et des exemples de pilotes que vous pourrez utiliser sur n'importe quel ordinateur tournant sous Linux. Dans le chapitre 1, cependant, nous vous demanderons de connecter des fils dans le port parallèle pour tester les connections matérielles mais ceci devrait être réalisable par tous.

La seconde partie du livre (chapitres 12 à 18) décrit les périphériques de type bloc, les interfaces réseau ainsi que des sujets plus pointus, tel que le sous-système de gestion de la mémoire virtuelle et la gestion des bus PCI et USB. Beaucoup de créateurs de pilotes n'ont pas besoin de ces concepts mais nous les encourageons à lire ces parties. La plupart des documents sont intéressants d'un point de vue du fonctionnement du noyau Linux, même si vous n'en avez pas besoin pour votre projet.


II-6. Instructions de fond

Pour utiliser ce livre, vous devez être à l'aise avec la programmation en C. Quelques connaissances d'Unix sont aussi nécessaires puisque nous nous référons à la sémantique d'Unix pour les appels systèmes, les commandes et les tubes. D'un point de vue matériel aucune connaissance à priori n'est nécessaire pour comprendre le livre, étant supposé que les concepts généraux sont clairs. Nous ne nous basons pas sur l'architecture spécifique du PC, et nous donnons toutes les informations nécessaires lorsque nous nous réferrons à une architecture particulière.

Plusieurs outils libres sont nécessaires pour compiler le noyau, et vous aurez besoin de versions spécifiques de ces outils. Les outils trop vieux ne disposent pas toujours des fonctionnalités nécessaires, alors que les trop récents pourront créer des noyaux qui ne sont pas fonctionnels. Généralement, les outils fournit avec votre distribution Linux suffiront. Les versions requises peuvent varier d'un noyau à un autre, vous pourrez consulter Documentation/Changes dans l'arborescence des sources de votre noyau pour savoir quels sont les versions exactes dont vous aurez besoin.


II-7. Version en ligne et licence

Les auteurs ont choisi de rendre ce livre librement disponible sous la licence Creative Commons "Attribution-ShareAlike", version 2.0 : http://www.oreilly.com/catalog/linuxdrive3


II-8. Conventions utilisées dans ce livre

Ce qui suit est une liste des conventions typographiques utilisées dans ce livre :

  • Italique: utilisé pour les noms de fichiers, dossiers, programmes, commandes (et options), URL ainsi que les nouveaux termes
  • Largeur constante: utilisée dans les exemples pour montrer le contenu de fichier ou la sortie de commandes et dans le texte pour indiquer les mots qui apparaissent dans le code C ou dans tout autre chaîne littérale
  • Largeur constante italique: utilisée pour indiquer le texte dans les commandes que l'utilisateur doit remplacer avec la valeur actuelle
  • Constante en gras: utilisée dans les exemples pour montrer les commandes ou tout autre texte qui devrait être tapé littéralement par l'utilisateur
Une particulière attention aux notes placées en dehors du texte avec les icônes suivantes :

infoCeci est un conseil. Il contient des informations complémentaires utiles à propos de la partie actuelle.
warningCeci est une mise en garde. Elle aide à résoudre et éviter des problèmes ennuyeux.

II-9. Utilisation des exemples de code

Ce livre est ici pour vous aider à mener votre travail à terme. En général, vous pouvez employer le code de ce livre dans vos programmes et documentation. Les exemples de code sont sous la double-licence BSD/GPL.

Nous apprécions, mais n'exigeons pas, d'attribution. Une attribution inclus habituellement le titre, l'auteur, l'éditeur et l'ISBN. Par exemple : "Linux Device Drivers, Third Edition, by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman. Copyright 2005 O'Reilly Media, Inc., 0-596-00590-3."


II-10. Nous aimerions avoir vos retours

Veuillez adresser vos commentaires ou questions concernant ce livre à notre éditeur :

O'Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol, CA 95472

(800) 998-9938 (aux USA ou Canada) (707) 829-0515 (international ou local)

(707) 829-0104 (fax)

Nous avons une page Web pour ce livre, où nous énumérons des errata, des exemples et toutes informations complémentaires. Vous pouvez accéder à cette page à : http://www.oreilly.com/catalog/linuxdrive3

Pour tout commentaire ou question technique à propos de ce livre, envoyez un courriel à : bookquestions@oreilly.com

Pour de plus amples informations sur nos livres, conférences, centre de ressources ou le réseau O'reilly, consulter notre site Web à l'adresse : http://www.oreilly.com


II-11. Safari activé

Quand vous voyez une icône "Safari® Enabled" sur la couverture de votre livre technologique préféré, cela signifie que le livre est accessible en ligne par l'étagère de Safari sur le réseau d'O'Reilly.

Safari offre une solution qui est meilleure que des e-livres. C'est une bibliothèque virtuelle qui vous laisse facilement rechercher des milliers de livres technologiques, copier et coller du code exemple, télécharger des chapitres, et trouver des réponses plus rapidement quand vous avez besoin de plus de précision, d'informations courantes. Essayez le gratuitement à : http://safari.oreilly.com.


II-12. Remerciements

Ce livre, bien sûr, n'a pas été écrit dans le vide. Nous voulons remercier les nombreuses personnes qui ont aidé à le rendre possible.

Merci à notre éditeur, Andy Oram. Ce livre est énormément bien meilleur grâce à ces efforts. Et évidemment, nous devons surtout beaucoup aux personnes qui ont créé les bases philosophiques et pratiques de la renaissance du logiciel libre actuel.

La première édition a été techniquement revue par Alan Cox, Greg Hankins, Hans Lermen, Heiko Eissfeldt et Miguel de Icaza (par ordre alphabétique, trié par prénom). Les relecteurs techniques de la seconde édition sont Allan B. Cruse, Christian Morgner, Jake Edge, Jeff Garzik, Jens Axboe, Jerry Cooperstein, Jerome Peter Lynch, Michael Kerrisk, Paul Kinzelman, et Raph Levien. Les relecteurs de la troisième édition sont Allan B. Cruse, Christian Morgner, James Bottomley, Jerry Cooperstein, Patrick Mochel, Paul Kinzelman, et Robert Love. Ensemble, ces personnes ont mis une vaste quantité d'efforts pour trouver des problèmes et préciser des améliorations possibles à notre écriture.

Dernier mais certainement pas des moindres, nous remercions les développeurs Linux pour leur travail acharné. Ceci inclut les programmeurs du noyau et les développeurs des couches supérieures, qui sont souvent oubliés. Dans ce livre, nous avons choisi de ne pas les appeler par leur nom afin d'éviter d'être injuste envers quelqu'un que nous pourrions oublier. Nous avons parfois fait exception à cette règle et appelé Linus par son nom. Nous espérons qu'il ne nous en veut pas.


II-12-1. Jon

Je dois commencer par remercier ma femme Laura et mes enfants Michele et Giulia pour remplir ma vie de joie et avoir supporté patiemment mes égarements tandis que je travaillais sur cette édition. Les abonnés de LWN.net ont, à travers leur générosité, permis à beaucoup de ce travail de s'accomplir. Les développeurs du noyau Linux m'ont rendu un grand service en me laissant faire partie de leur communauté, répondant à mes questions et me plaçant sur le droit chemin quand j'étais embrouillé. Merci aux lecteurs de la seconde édition de ce livre dont les commentaires, offerts à l'assemblée Linux de partout dans le monde, ont été gratifiants et inspirants. Et j'aimerais tout particulièrement remercier Alessandro Rubini pour avoir effectué ce travail complet sur la première édition (et avoir continué à travers cette édition); et Greg Kroah-Hartman, qui nous a apporté ses connaissances considérables sur plusieurs chapitres.


II-12-2. Alessandro

Je voudrais remercier les gens qui ont fait que ce travail soit possible. Tout d'abord, la patience incroyable de Frederica qui est allée jusqu'à me laisser passer en revue la première édition pendant notre lune de miel avec un ordinateur portable dans la tente. Je veux remercier Giorgio et Giulia qui ont été impliqués dans les éditions suivantes de ce livre et heureusement admis d'être des fils d'un zombie qui travaille souvent tard la nuit. Je dois beaucoup à tous les auteurs de logiciels libres qui m'ont réellement appris à programmer en rendant leur travail disponible pour n'importe qui veut l'étudier. Mais pour cette édition, je suis le plus reconnaissant envers Jon et Greg qui ont été de grands compagnons dans ce travail. Elle n'aurait pas pu voir le jour sans l'aide de l'un et de l'autre, car le code de base est de plus en plus gros et difficile, alors que mon temps est une ressource de plus en plus rare, toujours à satisfaire mes clients, les problèmes de logiciels libres, et les dates butoir dépassées. Jon fut un grand chef pour cette édition. Tout deux ont été très productifs et techniquement inestimables en complément de ma vision pour programmer, grâce à leurs compétences, sur les systèmes multiprocesseurs et machines à calculer.


II-12-3. Greg

Je tiens à remercier ma femme Shannon et mes enfants Madeline et Griffin pour leur compréhension et leur patience durant le moment où j'ai pris le temps de travailler sur ce livre. S'ils n'étaient pas là pour me soutenir sur les efforts originaux de développement, je n'aurai pas été capable de réaliser cela pour ce livre. Merci aussi à Alessandro et Jon qui m'ont offert de travailler sur ce livre. Je suis honoré qu'ils m'aient laissé y participer. Beaucoup de gratitude aux développeurs du noyau Linux qui étaient assez altruistes pour écrire du code ouvert et lisible au public, c'est comme ça que moi et d'autres ont pu apprendre tellement juste en le lisant. Aussi, à chacun qui m'ayant envoyé un rapport de bug, critiqué mon code et m'ont incendié lorsque je faisais des choses stupides, vous tous m'avez tellement enseigné sur la manière de devenir un meilleur développeur et, dans toute sa totalité, de m'avoir donné la sensation d'être la bienvenue dans cette communauté. Merci.

 

Valid XHTML 1.1!Valid CSS!

creative commons 2. à refaire lors de la mise en ligne finale