Main Page   Modules   Related Pages  

Brief introduction to the AtheOS kernel land

The AtheOS kernel have a very modular design where as much work as possible is delegated to dynamically loaded device drivers. Writing device drivers for the AtheOS kernel very much resemble normal application development. A driver is not a tightly integrated part of the kernel (like for example a Linux driver) but is more loosly tied to the kernel through a API exported by the kernel and a well defined interface exported by the device driver.

The driver API offer much of the same functionality as the "C" library offers to applications. You will find that many of the low-level functions you know from user-space applications are also available when working with device drivers. If you are familiar with C programming and know how to deal with multithreaded programming you should have no problem developing device drivers for AtheOS.

There is more than one type of kernel drivers. Currently 3 distinct interfaces are defined:

Common to all drivers is that they are linked to libkernel.so that is a "fake" DLL who export all the functions available to the device driver and that they export most of their functionality to the kernel through function pointers.

Most driver entry points are passed to the kernel through structures containing nothing but a list of correctly prototyped function pointers. For device drivers a distinct set of functions can be associated with each "node" it export in the /dev/ device hierarchy.

Filesystem only have one function-pointer table that will be associated by all files (or inodes) that lives in the FS.


Generated at Sat Apr 7 16:12:35 2001 for AtheOS device driver API by doxygen1.2.5 written by Dimitri van Heesch, © 1997-2001