URL: https://linuxfr.org/news/linux-device-drivers Title: Linux Device Drivers Authors: Anonyme Benoît Sibaud Date: 2001年01月07日T21:32:58+01:00 Tags: livre, pilote et linux Score: 0 Extrait: « _Qui ne s'est jamais dit en présence d'un matériel assez simple mais non encore supporté: "Il faut que je me code le driver ça ne doit pas être si sorcier !". En effet, si l'on a accès aux bonnes informations cette aventure peut s'avérer très constructive et enrichissante, comme vous le prouve cet ouvrage._ » ---- [Critique Complète.](http://linuxfr.org/view_attach.php3?id=77) ---- *Linux Device Drivers* *Auteur :* Alessandro Rubini *Éditeur :* O'REILLY *ISBN :* 1-56592-292-1 *Pages* 421 *Prix :* Constaté : 255F *Rédacteur :* trollhunter  Le premier chapitre vous présente tout naturellement les bases du noyau et les subtilités de licence s'appliquant au logiciel. Puis, dès le second chapitre l'on plonge directement dans le sujet avec la présentation des modules. Le troisième chapitre est lui consacré au bases des _char drivers_ avec les opérations de lecture/écriture. Arrivé à ce point de l'ouvrage, il est fort possible que vous ayez commencé à expérimenter dans votre coin et que vous ayez déjà quelques petits soucis, cela tombe bien, l'auteur vous donne les ficelles pour déboguer vos petits modules. Puis l'on replonge dans le monde des _char drivers_ avec la présentation d'_ioctl_, des E/S bloquantes et de la gestion des accès sur un fichier de périphérique. Lorsque l'on rédige des drivers, la gestion du paramètre temps est très importante puisqu'elle vous permet non seulement d'accéder au temps présent, de retarder certaines opérations pendant un certain temps ( cas par exemple de l'attente d'une vitesse de rotation constante pour certains périphériques ), aussi un chapitre entier y est constaté vous montrant les différentes manières d'y accéder, la gestion des files d'ordonnancement. Un autre paramètre très important est la gestion de la mémoire, avec, dans le chapitre suivant la présentation de kmalloc, vmalloc et get_free_page. Maintenant que la partie soft commence à vous être familière vous allez pouvoir aborder la partie hard, cette partie commence doucement avec la présentation du port favori des lecteurs du [Coffee mini HOWTO](http://linuxdoc.org/HOWTO/mini/Coffee.html) : le port parallèle. Puis l'on passe très vite sur les cartes ISA 1M, PCI, et l'accès en mode texte au buffer video. Le neuvième chapitre est dédié à la gestion des interruptions avec l'implémentation d'un mini gestionnaire d'interruptions. La gestion de la concurrence fait l'objet d'un soin particulier. Le chapitre suivant est consacré à l'utilisation judicieuse des types de données; en effet lorsque l'on désire écrire un driver portable il faut faire très attention à la taille des différents types, sinon des surprises vous attendent. Puis l'on revient sur la modularisation et kerneld, vous y apprendrez le support des versions dans vos modules ainsi que la persistence entre deux chargements/déchargement. Cet ouvrage ayant commencé par vous présenter les drivers caractères, le douzième chapitre vous présente les pilotes en mode bloc. À l'issue de ce chapitre des aspects tels la gestion des partitions par le _kernel_ n'auront plus de secrets pour vous. Un petit retour sur la mémoire dans le chapitre suivant puisque l'on vous présente MMAP et les accès DMA. Linux et réseau étant souvent associé, vous apprendrez les bases des gestionnaires réseau. Enfin, vous avez tout naturellement droit à un chapitre où les bus vous sont présentés. L'accent est particulièrement mis sur le bus PCI et l'on vous parle un peu de MCA, EISA, VLB et Sbus. Puis vous aurez droit à un chapitre intitulé _physical layout of the Kernel Source_ où A. Rubini vous explique où trouver les différents sous ensembles du noyau et vous donne un petit aperçu du _boot_ des PC, Alpha et SPARC. Le 17ème et dernier chapitre est quand à lui consacré aux derniers développements par exemple les macros permettant les conversions _big endian little endian_, ces macros introduites avec le 2.1.10 sont standards sur tous les kernels>= 2.2.x . Parmi les nombreux points que j'aime dans cet ouvrage d'introduction à l'écriture des pilotes pour le noyau il faut signaler le style de l'auteur qui aide à faire passer les difficultés de l'entreprise, de plus la structure des chapitres avec la petite partie introductive servant à placer le sujet, les explications très claire, le code et les sorties d'écran ou les dumps permettent de se faire une petite idée. En outre il faut signaler la clarté des schémas d'illustration que ce soit des schémas illustrant un brochage ou une structure de données. Enfin la section _Quick Reference_ permet de bien synthétiser les connaissances acquises au cours du chapitre, et rappellent dans quel fichier sont déclarés les fonctions vues au cours de ce chapitre. Par contre il y a quelques petits regrets, mais ils sont surtout dus à l'âge du livre (février 1998): cet ouvrage se base sur les noyaux 2.0 et 2.1.10, l'on ne parle pas du tout de l'USB, et la section sur le bus Sbus aurait mérité beaucoup plus d'explications d'autant plus que l'auteur possède une SPARC et que dans la section initialisation du 16ème chapitre l'amorçage d'une SPARC est très bien expliqué. Mais en dehors de ce petit détail, les quelques 400 pages de cet ouvrage sont vraiment très intéressantes. À signaler un autre ouvrage, qui est une petite initiation à l'écriture de modules pour le noyau, c'est le [Linux Kernel Module Programming guide]((http://linuxdoc.org/LDP/lkmpg/mpg.html). Enfin pour compléter le driver l'on pourra toujours se reporter à l'ouvrage de R.Stones où vous apprendrez à créer les bibliothèques de développement autour de votre pilote, à utiliser les services de syslogd et enfin à rédiger la page man expliquant le tout. ## Table des matières 1. An introduction to the Linux Kernel 2. Building and running modules 3. Char Drivers 4. Debugging techniques 5. Enhanced Char Driver Operations 6. Flow of time 7. Getting hold of Memory 8. Hardware Management 9. Interrupt Handling 10. Judicious use of Data Types 11. Kerneld and advanced Modularization 12. Loading Block Drivers 13. Mmap and DMA 14. Network Drivers 15. Overview of Peripheral Buses 16. Physical Layout of the kernel Source 17. Recent Developments 18. Index ## Références Exemples sur le web de ce titre : `ftp://ftp.ora.com/pub/examples/linux/drivers/` (NdM: site disparu et non archivé sur Web Archive, et `http://examples.oreilly.com/pub/examples/linux/drivers` ne les as pas non plus) Pour la [programmation Linux](https://linuxfr.org/news/programmation-linux).