November 1, 2000 LINEDISC 9

### NAME

linedisc, ttyldisc_add, ttyldisc_lookup, ttyldisc_remove - extensible line discipline framework

### SYNOPSIS

```int` ttyldisc_add(```struct linesw *disc``, int no`)
```struct` `linesw``*` ttyldisc_remove(```const char *name`)
```struct` `linesw``*` ttyldisc_lookup(```const char *name`)

### DESCRIPTION

The NetBSD TTY line discipline framework allows extensibility. Modules that need special line disciplines can add them as convenient and do not need to modify tty_conf.c. Line disciplines are now managed by a string, rather than number.

Once the framework has been initialized, a new line discipline can be added by creating and initializing a ```struct` `linesw` and calling ttyldisc_add(``).

The following is a brief description of each function in the framework:

ttyldisc_add(``)
  Register a line discipline. The ```l_name` field of the ```struct` `linesw` should point to a string which is to be the symbolic name of that line discipline. For compatibility purposes, a line discipline number can be passed in ```no`, but for new disciplines this should be set to ```-1`.

ttyldisc_lookup(``)
  Look up a line discipline by ```name`. ```NULL` is returned if it can not be found.

ttyldisc_remove(``)
  Remove a line discipline called ```name` and return a pointer to it. If the discipline cannot be found or removed ttyldisc_remove(``) will return ```NULL`.

### SEE ALSO

tty(4)

### HISTORY

The linedisc functions were added in NetBSD1.6.

### AUTHORS

The NetBSD extensible line discipline framework was created by Eduardo Horvath
<eeh@NetBSD.org>.