Drivers

There is little to say at this point about the Linux drivers directory. The source files in this directory have been referenced throughout the book; that’s why I left them until last in this walk through the source tree.

Char, Block, and Network Drivers

Although most of the drivers in these directories are specific to a particular hardware device, a few of the files play a more general role in the system’s setup.

As far as drivers/char is concerned, code that implements the N_TTY line discipline is implemented there. N_TTY is the default line discipline for system ttys, and it is defined in n_tty.c. Another device-independent file in drivers/char is misc.c, which provides support for ``misc'' devices. A ``misc'' device is a simplified char driver that has a single minor number.

This directory also includes console support for PCs and some other architecture-dependent drivers; it actually contains a miscellaneous assortment of files that didn’t fit elsewhere.

drivers/block is much cleaner. It includes single-file drivers for most block devices and the full-featured IDE driver, which is split into multiple files. Several files in this directory provide general-purpose support; genhd.c handles partition tables and ll_rw_block.c is in charge of the low-level mechanism for data transfer to and from the physical device. The request structure is the main player in ll_rw_block.c.

drivers/net contains a long list of drivers for PC network cards, plus a few for other architectures ...

Get Linux Device Drivers now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.