
menu "Character Devices"

config STDERR_CONSOLE
	bool "stderr console"
	default y
	help
	console driver which dumps all printk messages to stderr.

config STDIO_CONSOLE
	bool
	default y

config SSL
	bool "Virtual serial line"
	help
        The User-Mode Linux environment allows you to create virtual serial
        lines on the UML that are usually made to show up on the host as
        ttys or ptys.

        See <http://user-mode-linux.sourceforge.net/input.html> for more
        information and command line examples of how to use this facility.

        Unless you have a specific reason for disabling this, say Y.

config NULL_CHAN
	bool "null channel support"
	help
        This option enables support for attaching UML consoles and serial
        lines to a device similar to /dev/null.  Data written to it disappears
        and there is never any data to be read.

config PORT_CHAN
	bool "port channel support"
	help
        This option enables support for attaching UML consoles and serial
        lines to host portals.  They may be accessed with 'telnet <host>
        <port number>'.  Any number of consoles and serial lines may be
        attached to a single portal, although what UML device you get when
        you telnet to that portal will be unpredictable.
        It is safe to say 'Y' here.

config PTY_CHAN
	bool "pty channel support"
	help
        This option enables support for attaching UML consoles and serial
        lines to host pseudo-terminals.  Access to both traditional
        pseudo-terminals (/dev/pty*) and pts pseudo-terminals are controlled
        with this option.  The assignment of UML devices to host devices
        will be announced in the kernel message log.
        It is safe to say 'Y' here.

config TTY_CHAN
	bool "tty channel support"
	help
        This option enables support for attaching UML consoles and serial
        lines to host terminals.  Access to both virtual consoles
        (/dev/tty*) and the slave side of pseudo-terminals (/dev/ttyp* and
        /dev/pts/*) are controlled by this option.
        It is safe to say 'Y' here.

config XTERM_CHAN
	bool "xterm channel support"
	help
        This option enables support for attaching UML consoles and serial
        lines to xterms.  Each UML device so assigned will be brought up in
        its own xterm.
        It is safe to say 'Y' here.

config NOCONFIG_CHAN
	bool
	default !(XTERM_CHAN && TTY_CHAN && PTY_CHAN && PORT_CHAN && NULL_CHAN)

config CON_ZERO_CHAN
	string "Default main console channel initialization"
	default "fd:0,fd:1"
	help
        This is the string describing the channel to which the main console
        will be attached by default.  This value can be overridden from the
        command line.  The default value is "fd:0,fd:1", which attaches the
        main console to stdin and stdout.
        It is safe to leave this unchanged.

config CON_CHAN
	string "Default console channel initialization"
	default "xterm"
	help
        This is the string describing the channel to which all consoles
        except the main console will be attached by default.  This value can
        be overridden from the command line.  The default value is "xterm",
        which brings them up in xterms.
        It is safe to leave this unchanged, although you may wish to change
        this if you expect the UML that you build to be run in environments
        which don't have X or xterm available.

config SSL_CHAN
	string "Default serial line channel initialization"
	default "pty"
	help
        This is the string describing the channel to which the serial lines
        will be attached by default.  This value can be overridden from the
        command line.  The default value is "pty", which attaches them to
        traditional pseudo-terminals.
        It is safe to leave this unchanged, although you may wish to change
        this if you expect the UML that you build to be run in environments
        which don't have a set of /dev/pty* devices.

config UNIX98_PTYS
	bool "Unix98 PTY support"
	---help---
	  A pseudo terminal (PTY) is a software device consisting of two
	  halves: a master and a slave. The slave device behaves identical to
	  a physical terminal; the master device is used by a process to
	  read data from and write data to the slave, thereby emulating a
	  terminal. Typical programs for the master side are telnet servers
	  and xterms.

	  Linux has traditionally used the BSD-like names /dev/ptyxx for
	  masters and /dev/ttyxx for slaves of pseudo terminals. This scheme
	  has a number of problems. The GNU C library glibc 2.1 and later,
	  however, supports the Unix98 naming standard: in order to acquire a
	  pseudo terminal, a process opens /dev/ptmx; the number of the pseudo
	  terminal is then made available to the process and the pseudo
	  terminal slave can be accessed as /dev/pts/<number>. What was
	  traditionally /dev/ttyp2 will then be /dev/pts/2, for example.

	  All modern Linux systems use the Unix98 ptys.  Say Y unless
	  you're on an embedded system and want to conserve memory.

config LEGACY_PTYS
	bool "Legacy (BSD) PTY support"
	default y
	---help---
	  A pseudo terminal (PTY) is a software device consisting of two
	  halves: a master and a slave. The slave device behaves identical to
	  a physical terminal; the master device is used by a process to
	  read data from and write data to the slave, thereby emulating a
	  terminal. Typical programs for the master side are telnet servers
	  and xterms.

	  Linux has traditionally used the BSD-like names /dev/ptyxx
	  for masters and /dev/ttyxx for slaves of pseudo
	  terminals. This scheme has a number of problems, including
	  security.  This option enables these legacy devices; on most
	  systems, it is safe to say N.

config RAW_DRIVER
        tristate "RAW driver (/dev/raw/rawN) (OBSOLETE)"
        help
          The raw driver permits block devices to be bound to /dev/raw/rawN.
          Once bound, I/O against /dev/raw/rawN uses efficient zero-copy I/O.
          See the raw(8) manpage for more details.

          The raw driver is deprecated and will be removed soon.
          Applications should simply open the device (eg /dev/hda1)
          with the O_DIRECT flag.

config MAX_RAW_DEVS
        int "Maximum number of RAW devices to support (1-8192)"
        depends on RAW_DRIVER
        default "256"
        help
          The maximum number of RAW devices that are supported.
          Default is 256. Increase this number in case you need lots of
          raw devices.

config LEGACY_PTY_COUNT
	int "Maximum number of legacy PTY in use"
	depends on LEGACY_PTYS
	default "256"
	---help---
	  The maximum number of legacy PTYs that can be used at any one time.
	  The default is 256, and should be more than enough.  Embedded
	  systems may want to reduce this to save memory.

	  When not in use, each legacy PTY occupies 12 bytes on 32-bit
	  architectures and 24 bytes on 64-bit architectures.

config WATCHDOG
	bool "Watchdog Timer Support"

config WATCHDOG_NOWAYOUT
	bool "Disable watchdog shutdown on close"
	depends on WATCHDOG

config SOFT_WATCHDOG
	tristate "Software Watchdog"
	depends on WATCHDOG

config UML_WATCHDOG
	tristate "UML watchdog"
	depends on WATCHDOG

config UML_SOUND
	tristate "Sound support"
	help
        This option enables UML sound support.  If enabled, it will pull in
        soundcore and the UML hostaudio relay, which acts as a intermediary
        between the host's dsp and mixer devices and the UML sound system.
        It is safe to say 'Y' here.

config SOUND
	tristate
	default UML_SOUND

config HOSTAUDIO
	tristate
	default UML_SOUND

#It is selected elsewhere, so kconfig would warn without this.
config HW_RANDOM
	tristate
	default n

config UML_RANDOM
	tristate "Hardware random number generator"
	help
	This option enables UML's "hardware" random number generator.  It
	attaches itself to the host's /dev/random, supplying as much entropy
	as the host has, rather than the small amount the UML gets from its
	own drivers.  It registers itself as a standard hardware random number
	generator, major 10, minor 183, and the canonical device name is
	/dev/hwrng.
	The way to make use of this is to install the rng-tools package
	(check your distro, or download from
	http://sourceforge.net/projects/gkernel/).  rngd periodically reads
	/dev/hwrng and injects the entropy into /dev/random.

config MMAPPER
	tristate "iomem emulation driver"
	help
	This driver allows a host file to be used as emulated IO memory inside
	UML.

endmenu

