INTRO(4) INTRO(4) NAME intro - introduction to devices, line disciplines, and file systems DESCRIPTION This section describes drivers for devices, stream line disciplines, and file systems. Devices are accessed through special files of type `S_IFBLK' (block devices) or `S_IFCHR' (character devices); see stat(2). Block devices use a block buffering scheme within the system, so that sectored devices like disks may be accessed a byte at a time. Character devices don't use the block buffers. Only block devices may be mounted as disk file systems. Most block devices have associated `raw' character devices that bypass all buffering for fast direct I/O. The device associated with a special file is identified by a pair of numbers: a major device number naming the driver, and a minor device number picking some particular device or subunit. Major numbers are listed in mknod(8). Minor num- bers are specific to each driver; see the writeups in this section. Minor numbers are stored in a single unsigned byte; they are chosen from the range 0-255. Some character devices are also stream devices. These use a different internal buffering mechanism to allow data to flow asynchronously. Various special operations are possible on streams; see stream(4). Line disciplines are processing modules that may be inserted into streams. They are identified by integers passed to the calls that insert and remove them. The C library contains global variables initialized to the numbers for various line disciplines; stream(4) has a list. There are several different types of file system: conven- tional disk volumes, remote file systems accessed by the system sending messages though a stream to a server as described in netfs(8), a file system containing a file rep- resenting each process in the system, and so on. All of these appear the same to ordinary processes, except that not all file systems implement all operations; for example, a process file has a name, and may be opened, read, and writ- ten like an ordinary file, but may not be renamed because proc(4) doesn't allow that. File system types are identified by integers, used by and listed in fmount(2). They are just magic numbers at present. INTRO(4) INTRO(4) SEE ALSO fmount(2), stream(4), mknod(8)