He colgado en la web de intelligenia un documento sobre programación de drivers (controladores) en linux que realicé junto con unas compañeras para una asignatura.
Está publicado bajo CC y creo que es interesante porque hay poco material sobre el tema en español.
El documento pretende abordar la ardua tarea de programar un manejador (también llamado controlador o driver) de dispositivos en linux. Dicha tarea se puede realizar mediante el concepto de módulo de carga dinámica. Dichos módulos son pequeños trozos de código que se pueden cargar en el kernel del SO de modo dinámico en tiempo de ejecución. Con ello se dota a linux de una gran capacidad de extensión.
La principal ventaja de usar un módulo es que éste se ejecuta como parte del núcleo. Es decir, no se trata de un módulo que se comunica con él (como sucede con los procesos) sino que se ejecuta en modo kernel y tiene por tanto total acceso a todos los dispositivos del sistema.
Junto al documento se incluyen los ficheros eddy.c, eddy.h testeddy.cpp y makefile, que permiten la compilación del manejador de ejemplo para el dispositivo que optamos por llamar EDDY (Elemental Didactic Device as Yet).
Tengo un par de documentos del estilo, cuando vaya teniendo tiempo los iré sacando por aquí.
Enlace: Programación de drivers en linux.