mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	Include the literal device list from a separate file. This helps the pdf build. Signed-off-by: Jani Nikula <jani.nikula@intel.com>
		
			
				
	
	
		
			268 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			268 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
 | 
						|
Linux allocated devices (4.x+ version)
 | 
						|
======================================
 | 
						|
 | 
						|
This list is the Linux Device List, the official registry of allocated
 | 
						|
device numbers and ``/dev`` directory nodes for the Linux operating
 | 
						|
system.
 | 
						|
 | 
						|
The LaTeX version of this document is no longer maintained, nor is
 | 
						|
the document that used to reside at lanana.org.  This version in the
 | 
						|
mainline Linux kernel is the master document.  Updates shall be sent
 | 
						|
as patches to the kernel maintainers (see the
 | 
						|
:ref:`Documentation/process/submitting-patches.rst <submittingpatches>` document).
 | 
						|
Specifically explore the sections titled "CHAR and MISC DRIVERS", and
 | 
						|
"BLOCK LAYER" in the MAINTAINERS file to find the right maintainers
 | 
						|
to involve for character and block devices.
 | 
						|
 | 
						|
This document is included by reference into the Filesystem Hierarchy
 | 
						|
Standard (FHS).	 The FHS is available from http://www.pathname.com/fhs/.
 | 
						|
 | 
						|
Allocations marked (68k/Amiga) apply to Linux/68k on the Amiga
 | 
						|
platform only.	Allocations marked (68k/Atari) apply to Linux/68k on
 | 
						|
the Atari platform only.
 | 
						|
 | 
						|
This document is in the public domain.	The authors requests, however,
 | 
						|
that semantically altered versions are not distributed without
 | 
						|
permission of the authors, assuming the authors can be contacted without
 | 
						|
an unreasonable effort.
 | 
						|
 | 
						|
 | 
						|
.. attention::
 | 
						|
 | 
						|
  DEVICE DRIVERS AUTHORS PLEASE READ THIS
 | 
						|
 | 
						|
  Linux now has extensive support for dynamic allocation of device numbering
 | 
						|
  and can use ``sysfs`` and ``udev`` (``systemd``) to handle the naming needs.
 | 
						|
  There are still some exceptions in the serial and boot device area. Before
 | 
						|
  asking   for a device number make sure you actually need one.
 | 
						|
 | 
						|
  To have a major number allocated, or a minor number in situations
 | 
						|
  where that applies (e.g. busmice), please submit a patch and send to
 | 
						|
  the authors as indicated above.
 | 
						|
 | 
						|
  Keep the description of the device *in the same format
 | 
						|
  as this list*. The reason for this is that it is the only way we have
 | 
						|
  found to ensure we have all the requisite information to publish your
 | 
						|
  device and avoid conflicts.
 | 
						|
 | 
						|
  Finally, sometimes we have to play "namespace police."  Please don't be
 | 
						|
  offended.  We often get submissions for ``/dev`` names that would be bound
 | 
						|
  to cause conflicts down the road.  We are trying to avoid getting in a
 | 
						|
  situation where we would have to suffer an incompatible forward
 | 
						|
  change.  Therefore, please consult with us **before** you make your
 | 
						|
  device names and numbers in any way public, at least to the point
 | 
						|
  where it would be at all difficult to get them changed.
 | 
						|
 | 
						|
  Your cooperation is appreciated.
 | 
						|
 | 
						|
.. include:: devices.txt
 | 
						|
   :literal:
 | 
						|
 | 
						|
Additional ``/dev/`` directory entries
 | 
						|
--------------------------------------
 | 
						|
 | 
						|
This section details additional entries that should or may exist in
 | 
						|
the /dev directory.  It is preferred that symbolic links use the same
 | 
						|
form (absolute or relative) as is indicated here.  Links are
 | 
						|
classified as "hard" or "symbolic" depending on the preferred type of
 | 
						|
link; if possible, the indicated type of link should be used.
 | 
						|
 | 
						|
Compulsory links
 | 
						|
++++++++++++++++
 | 
						|
 | 
						|
These links should exist on all systems:
 | 
						|
 | 
						|
=============== =============== =============== ===============================
 | 
						|
/dev/fd		/proc/self/fd	symbolic	File descriptors
 | 
						|
/dev/stdin	fd/0		symbolic	stdin file descriptor
 | 
						|
/dev/stdout	fd/1		symbolic	stdout file descriptor
 | 
						|
/dev/stderr	fd/2		symbolic	stderr file descriptor
 | 
						|
/dev/nfsd	socksys		symbolic	Required by iBCS-2
 | 
						|
/dev/X0R	null		symbolic	Required by iBCS-2
 | 
						|
=============== =============== =============== ===============================
 | 
						|
 | 
						|
Note: ``/dev/X0R`` is <letter X>-<digit 0>-<letter R>.
 | 
						|
 | 
						|
Recommended links
 | 
						|
+++++++++++++++++
 | 
						|
 | 
						|
It is recommended that these links exist on all systems:
 | 
						|
 | 
						|
 | 
						|
=============== =============== =============== ===============================
 | 
						|
/dev/core	/proc/kcore	symbolic	Backward compatibility
 | 
						|
/dev/ramdisk	ram0		symbolic	Backward compatibility
 | 
						|
/dev/ftape	qft0		symbolic	Backward compatibility
 | 
						|
/dev/bttv0	video0		symbolic	Backward compatibility
 | 
						|
/dev/radio	radio0		symbolic	Backward compatibility
 | 
						|
/dev/i2o*	/dev/i2o/*	symbolic	Backward compatibility
 | 
						|
/dev/scd?	sr?		hard		Alternate SCSI CD-ROM name
 | 
						|
=============== =============== =============== ===============================
 | 
						|
 | 
						|
Locally defined links
 | 
						|
+++++++++++++++++++++
 | 
						|
 | 
						|
The following links may be established locally to conform to the
 | 
						|
configuration of the system.  This is merely a tabulation of existing
 | 
						|
practice, and does not constitute a recommendation.  However, if they
 | 
						|
exist, they should have the following uses.
 | 
						|
 | 
						|
=============== =============== =============== ===============================
 | 
						|
/dev/mouse	mouse port	symbolic	Current mouse device
 | 
						|
/dev/tape	tape device	symbolic	Current tape device
 | 
						|
/dev/cdrom	CD-ROM device	symbolic	Current CD-ROM device
 | 
						|
/dev/cdwriter	CD-writer	symbolic	Current CD-writer device
 | 
						|
/dev/scanner	scanner		symbolic	Current scanner device
 | 
						|
/dev/modem	modem port	symbolic	Current dialout device
 | 
						|
/dev/root	root device	symbolic	Current root filesystem
 | 
						|
/dev/swap	swap device	symbolic	Current swap device
 | 
						|
=============== =============== =============== ===============================
 | 
						|
 | 
						|
``/dev/modem`` should not be used for a modem which supports dialin as
 | 
						|
well as dialout, as it tends to cause lock file problems.  If it
 | 
						|
exists, ``/dev/modem`` should point to the appropriate primary TTY device
 | 
						|
(the use of the alternate callout devices is deprecated).
 | 
						|
 | 
						|
For SCSI devices, ``/dev/tape`` and ``/dev/cdrom`` should point to the
 | 
						|
*cooked* devices (``/dev/st*`` and ``/dev/sr*``, respectively), whereas
 | 
						|
``/dev/cdwriter`` and /dev/scanner should point to the appropriate generic
 | 
						|
SCSI devices (/dev/sg*).
 | 
						|
 | 
						|
``/dev/mouse`` may point to a primary serial TTY device, a hardware mouse
 | 
						|
device, or a socket for a mouse driver program (e.g. ``/dev/gpmdata``).
 | 
						|
 | 
						|
Sockets and pipes
 | 
						|
+++++++++++++++++
 | 
						|
 | 
						|
Non-transient sockets and named pipes may exist in /dev.  Common entries are:
 | 
						|
 | 
						|
=============== =============== ===============================================
 | 
						|
/dev/printer	socket		lpd local socket
 | 
						|
/dev/log	socket		syslog local socket
 | 
						|
/dev/gpmdata	socket		gpm mouse multiplexer
 | 
						|
=============== =============== ===============================================
 | 
						|
 | 
						|
Mount points
 | 
						|
++++++++++++
 | 
						|
 | 
						|
The following names are reserved for mounting special filesystems
 | 
						|
under /dev.  These special filesystems provide kernel interfaces that
 | 
						|
cannot be provided with standard device nodes.
 | 
						|
 | 
						|
=============== =============== ===============================================
 | 
						|
/dev/pts	devpts		PTY slave filesystem
 | 
						|
/dev/shm	tmpfs		POSIX shared memory maintenance access
 | 
						|
=============== =============== ===============================================
 | 
						|
 | 
						|
Terminal devices
 | 
						|
----------------
 | 
						|
 | 
						|
Terminal, or TTY devices are a special class of character devices.  A
 | 
						|
terminal device is any device that could act as a controlling terminal
 | 
						|
for a session; this includes virtual consoles, serial ports, and
 | 
						|
pseudoterminals (PTYs).
 | 
						|
 | 
						|
All terminal devices share a common set of capabilities known as line
 | 
						|
disciplines; these include the common terminal line discipline as well
 | 
						|
as SLIP and PPP modes.
 | 
						|
 | 
						|
All terminal devices are named similarly; this section explains the
 | 
						|
naming and use of the various types of TTYs.  Note that the naming
 | 
						|
conventions include several historical warts; some of these are
 | 
						|
Linux-specific, some were inherited from other systems, and some
 | 
						|
reflect Linux outgrowing a borrowed convention.
 | 
						|
 | 
						|
A hash mark (``#``) in a device name is used here to indicate a decimal
 | 
						|
number without leading zeroes.
 | 
						|
 | 
						|
Virtual consoles and the console device
 | 
						|
+++++++++++++++++++++++++++++++++++++++
 | 
						|
 | 
						|
Virtual consoles are full-screen terminal displays on the system video
 | 
						|
monitor.  Virtual consoles are named ``/dev/tty#``, with numbering
 | 
						|
starting at ``/dev/tty1``; ``/dev/tty0`` is the current virtual console.
 | 
						|
``/dev/tty0`` is the device that should be used to access the system video
 | 
						|
card on those architectures for which the frame buffer devices
 | 
						|
(``/dev/fb*``) are not applicable. Do not use ``/dev/console``
 | 
						|
for this purpose.
 | 
						|
 | 
						|
The console device, ``/dev/console``, is the device to which system
 | 
						|
messages should be sent, and on which logins should be permitted in
 | 
						|
single-user mode.  Starting with Linux 2.1.71, ``/dev/console`` is managed
 | 
						|
by the kernel; for previous versions it should be a symbolic link to
 | 
						|
either ``/dev/tty0``, a specific virtual console such as ``/dev/tty1``, or to
 | 
						|
a serial port primary (``tty*``, not ``cu*``) device, depending on the
 | 
						|
configuration of the system.
 | 
						|
 | 
						|
Serial ports
 | 
						|
++++++++++++
 | 
						|
 | 
						|
Serial ports are RS-232 serial ports and any device which simulates
 | 
						|
one, either in hardware (such as internal modems) or in software (such
 | 
						|
as the ISDN driver.)  Under Linux, each serial ports has two device
 | 
						|
names, the primary or callin device and the alternate or callout one.
 | 
						|
Each kind of device is indicated by a different letter.	 For any
 | 
						|
letter X, the names of the devices are ``/dev/ttyX#`` and ``/dev/cux#``,
 | 
						|
respectively; for historical reasons, ``/dev/ttyS#`` and ``/dev/ttyC#``
 | 
						|
correspond to ``/dev/cua#`` and ``/dev/cub#``. In the future, it should be
 | 
						|
expected that multiple letters will be used; all letters will be upper
 | 
						|
case for the "tty" device (e.g. ``/dev/ttyDP#``) and lower case for the
 | 
						|
"cu" device (e.g. ``/dev/cudp#``).
 | 
						|
 | 
						|
The names ``/dev/ttyQ#`` and ``/dev/cuq#`` are reserved for local use.
 | 
						|
 | 
						|
The alternate devices provide for kernel-based exclusion and somewhat
 | 
						|
different defaults than the primary devices.  Their main purpose is to
 | 
						|
allow the use of serial ports with programs with no inherent or broken
 | 
						|
support for serial ports.  Their use is deprecated, and they may be
 | 
						|
removed from a future version of Linux.
 | 
						|
 | 
						|
Arbitration of serial ports is provided by the use of lock files with
 | 
						|
the names ``/var/lock/LCK..ttyX#``. The contents of the lock file should
 | 
						|
be the PID of the locking process as an ASCII number.
 | 
						|
 | 
						|
It is common practice to install links such as /dev/modem
 | 
						|
which point to serial ports.  In order to ensure proper locking in the
 | 
						|
presence of these links, it is recommended that software chase
 | 
						|
symlinks and lock all possible names; additionally, it is recommended
 | 
						|
that a lock file be installed with the corresponding alternate
 | 
						|
device.	 In order to avoid deadlocks, it is recommended that the locks
 | 
						|
are acquired in the following order, and released in the reverse:
 | 
						|
 | 
						|
	1. The symbolic link name, if any (``/var/lock/LCK..modem``)
 | 
						|
	2. The "tty" name (``/var/lock/LCK..ttyS2``)
 | 
						|
	3. The alternate device name (``/var/lock/LCK..cua2``)
 | 
						|
 | 
						|
In the case of nested symbolic links, the lock files should be
 | 
						|
installed in the order the symlinks are resolved.
 | 
						|
 | 
						|
Under no circumstances should an application hold a lock while waiting
 | 
						|
for another to be released.  In addition, applications which attempt
 | 
						|
to create lock files for the corresponding alternate device names
 | 
						|
should take into account the possibility of being used on a non-serial
 | 
						|
port TTY, for which no alternate device would exist.
 | 
						|
 | 
						|
Pseudoterminals (PTYs)
 | 
						|
++++++++++++++++++++++
 | 
						|
 | 
						|
Pseudoterminals, or PTYs, are used to create login sessions or provide
 | 
						|
other capabilities requiring a TTY line discipline (including SLIP or
 | 
						|
PPP capability) to arbitrary data-generation processes.	 Each PTY has
 | 
						|
a master side, named ``/dev/pty[p-za-e][0-9a-f]``, and a slave side, named
 | 
						|
``/dev/tty[p-za-e][0-9a-f]``.  The kernel arbitrates the use of PTYs by
 | 
						|
allowing each master side to be opened only once.
 | 
						|
 | 
						|
Once the master side has been opened, the corresponding slave device
 | 
						|
can be used in the same manner as any TTY device.  The master and
 | 
						|
slave devices are connected by the kernel, generating the equivalent
 | 
						|
of a bidirectional pipe with TTY capabilities.
 | 
						|
 | 
						|
Recent versions of the Linux kernels and GNU libc contain support for
 | 
						|
the System V/Unix98 naming scheme for PTYs, which assigns a common
 | 
						|
device, ``/dev/ptmx``, to all the masters (opening it will automatically
 | 
						|
give you a previously unassigned PTY) and a subdirectory, ``/dev/pts``,
 | 
						|
for the slaves; the slaves are named with decimal integers (``/dev/pts/#``
 | 
						|
in our notation).  This removes the problem of exhausting the
 | 
						|
namespace and enables the kernel to automatically create the device
 | 
						|
nodes for the slaves on demand using the "devpts" filesystem.
 |