NAME
dev - device files in /dev
DESCRIPTION
Device files are the eyes and ears of the system. Through
the device files one has access to the disks, terminals and
other parts of the machine. Single bytes or disk blocks may
be transferred to or from a device with ordinary read(2) or
write(2) calls, byte positions set with lseek(2), or more
complicated control functions performed with ioctl(2).
Device files as found in /dev have several attributes that
must be considered. Here are two examples as ls -l shows
them:
brw-rw-rw- 1 root operator 2, 1 Jun 10 1995 fd1
crw--w---- 1 kjb tty 4, 0 May 11 09:41 console
Most attributes are the same as for a regular file and have
the same function. The file type and the major and minor
device numbers are special to devices.
Character devices are marked with a c as a file type letter.
Any I/O on a character device is sent down to the device
driver without any interpretation. This means that a pro-
cess doing the I/O must know the characteristics of the dev-
ice and deal with them appropriately.
Block devices provoke the file system server into buffering
the data on those devices. Data read or written by
processes is passed through the file system block cache.
Unaligned bytes read or written are extracted or reassembled
by the file server from or to whole blocks in the cache.
The file server transfers data to or from the device driver
as blocks to positions at block size boundaries. These
blocks are MINIX 3 blocks of 1024 bytes, disk devices usu-
ally have a 512 byte block size. Only block devices can be
mounted as part of the file system tree if they contain a
MINIX 3 file system.
The major device number (2 for fd1 and 4 for console) are
used by FS to find the device driver that manages a device.
The minor device number (1 for fd1 and 0 for console) is
passed to the driver to select a device among a number of
related devices that are all managed by that driver. The
device drivers are usually kernel tasks under MINIX 3, small
processes that are contained within the address space of the
kernel. The following tasks and associated devices exist:
Memory (major 1)
The ram, mem, kmem, and null devices are managed by the
memory task. The ram device is a block device for a chunk
of memory that is the RAM disk. Any byte read from or writ-
ten to the ram device is copied from or to that memory
chunk. The mem device is a character device for the entire
address space of the system, but kmem only for the kernel
data area. These two devices allow programs like ps(1) to
hunt around the system looking for interesting bits. The
null device is a data sink. It happily swallows any bytes
written to it, and returns nothing on a read.
Floppy disk (major 2)
The fd0, fd0p0, fd0p1, fd0p2, and fd0p3 block devices are
the first floppy disk and the four partitions that may exist
on a that floppy disk. Likewise are fd1 and fd1p[0-3] the
device and partitions for the second floppy disk. The
floppy disk devices are described in detail in fd(4). Par-
titioning in general is explained in controller(4).
Controller 0 (major 3)
The first hard disk on controller 0 can be accessed by block
device c0d0. This device addresses the entire hard disk
from the first to the last sector. A hard disk is normally
partitioned in up to four primary partitions, c0d0p0,
c0d0p1, c0d0p2, and c0d0p3. Each of these devices accesses
a range of sectors on the c0d0 device. It is customary to
give each operating system on a disk a primary partition.
So the Windows C: "drive" can be on c0d0p0, and MINIX 3 can
be on c0d0p1. MINIX 3 wants to have several partitions on
its own, so c0d0p1 can be further subdivided into the sub-
partitions c0d0p1s0, c0d0p1s1, c0d0p1s2, and c0d0p1s3. /dev
contains devices for the first and second hard disk (c0d0
and c0d1), their primary partitions (c0d[01]p[0-3]) and sub-
partitions thereof (c0d[01]p[0-3]s[0-3]). More detail can
be found in controller(4).
Terminals (minor 4)
The TTY driver manages the system console device, aptly
named console, the serial lines, tty00 and tty01, and the
pseudo ttys. Through the console device one can display
characters on a screen attached to a monochrome, Hercules,
color, or VGA adapter. The ttyc1, ttyc2, etc. devices are
the so-called "virtual consoles" that share the one console
display. One can select which virtual console is to be
visible on the screen and take input from the keyboard. To
allow remote login the devices with minor numbers of 128 or
higher offer virtual terminals. These pseudo ttys come in
tty, pty pairs that form a pipe between processes running
under the tty, and a controlling process attached to the pty
side. See also console(4), and tty(4).
Anonymous TTY (major 5)
This is just one device named tty that is a synonym for the
controlling tty of a process. This device is not managed by
any device driver, but is handled by FS itself. A process
can get access to the terminal it is running under by using
/dev/tty.
Line printer (major 6)
The lp device sends any bytes written to it to the printer.
TCP/IP (major 7)
The TCP/IP task is not a kernel task, but a server like MM
and FS. It sits between FS and the DP8390 task that manages
the ethernet boards. Together they implement the TCP/IP
protocol. See also ip(4).
Controller 1 (major 8)
Like controller 0 (major 3), but managing a second con-
troller with devices /dev/c1*.
Controller 2 (major 10)
Like controller 0.
Controller 3 (major 12)
Like controller 0.
Audio (major 13)
The audio device can be used to produce or record air vibra-
tions using a Soundblaster 16 type audio card. See
audio(4).
Mixer (major 14)
The mixer device is used to control the audio driver.
FILES
/dev/* All MINIX 3 devices
SEE ALSO
read(2), write(2), lseek(2), ioctl(2), console(4), fd(4),
controller(4), ip(4), tty(4), MAKEDEV(8).
DIAGNOSTICS
There are five prominent errors that processes accessing
device files may provoke:
ENODEV - No such device
There is no driver managing the device class this dev-
ice belongs to. Either the driver is configured out,
or it is not loaded (inet).
ENXIO - No such device or address
This device is not available. Either the driver does
not support it at all, or the hardware isn't available,
i.e. accessing the second disk on a system with only
one disk.
EACCES - Permission denied
This error may cause a lot of head scratching if ls -l
shows a device file to be writable. The media you are
trying to access is simply physically write protected!
EINVAL - Invalid argument
Devices may not like reads or writes that are not block
multiples, or very big transfers, etc. The device
manual page should list the limits.
EIO - I/O error
This may be a real I/O error, i.e. a read or write on
the device failing due to a media error. But it may
also be the result of an operation that a device can't
do, or an empty tape drive, etc.
NOTES
Some devices are not present by default. The MAKEDEV script
knows how to make them.
MS-DOS/Windows equivalents
The names of MS-DOS/Windows devices probably map to MINIX 3
devices as follows:
A: fd0
B: fd1
C: c0d0p0 (usually the first partition)
D: c0d1p0, c0d2p0 (if it's another disk)
D: c0d0p1s0 (if it's an extended partition)
D: c0d1, c0d2, c0d3 (if it's a CD-ROM)
CON console
COM1 tty00 (UNIX counts from 0)
LPT1 lp
AUTHOR
Kees J. Bot (kjb@cs.vu.nl)