chickadee » ioctl


An interface to the ioctl(2) system call.

ioctl(2) provides an interface to the operating system terminal drivers (or more commonly these days to ptys (pseudo-terminals)). ioctl is very low-level - most aspects of the terminal can be controlled with the higher-level termios(4), available in Chicken as the even higher-level stty egg.


ioctl-winsize #!optional <port-or-fileno>procedure

Returns a list of the form (<num-rows> <num-columns>) for the given port or file descriptor, defaulting to current-output-port.

(ioctl <port-or-fileno> <request> [<args> ...])procedure

Makes the given ioctl request with any arguments provided. The following requests are available:

  • TIOCSETD int *ldisc change the line discipline:
    • TTYDISC termios interactive line discipline
    • TABLDISC tablet line discipline
    • SLIPDISC serial IP line discipline
    • PPPDISC PPP line discipline
  • TIOCGETD int *ldisc return the current line discipline
  • TIOCSBRK set the terminal into BREAK condition
  • TIOCCBRK clear the terminal BREAK condition
  • TIOCSDTR assert data terminal ready
  • TIOCCDTR clear data terminal ready
  • TIOCGPGRP int *tpgrp return the terminal's process group
  • TIOCSPGRP int *tpgrp associate the terminal's process group
  • TIOCGETA struct termios *term get the terminal's termios attributes
  • TIOCSETA struct termios *term set the terminal's termios attributes
  • TIOCSETAW struct termios *term set the termios attrs after any output completes
  • TIOCSETAF struct termios *term after any output completes, clear input and set termios attrs
  • TIOCOUTQ int *num current number of characters in the output queue
  • TIOCSTI char *cp manually send a character to the terminal
  • TIOCSTOP stop output (like typing ^S)
  • TIOCSTART start output (like typing ^Q)
  • TIOCSCTTY make this the controlling terminal for the process
  • TIOCDRAIN wait until all output is drained
  • TIOCEXCL set exclusive use on the terminal
  • TIOCNXCL clear exclusive use of the terminal
  • TIOCFLUSH int *what clear input/output if `what' has FREAD/FWRITE set
  • TIOCGWINSZ struct winsize *ws get the winsize information
  • TIOCSWINSZ struct winsize *ws set the winsize information
  • TIOCCONS int *on redirect kernel console messages
  • TIOCMSET int *state set the modem state bit flags according to the following:
    • TIOCM_LE Line Enable
    • TIOCM_DTR Data Terminal Ready
    • TIOCM_RTS Request To Send
    • TIOCM_ST Secondary Transmit
    • TIOCM_SR Secondary Receive
    • TIOCM_CTS Clear To Send
    • TIOCM_CAR Carrier Detect
    • TIOCM_CD Carrier Detect (synonym)
    • TIOCM_RNG Ring Indication
    • TIOCM_RI Ring Indication (synonym)
    • TIOCM_DSR Data Set Ready
  • TIOCMGET int *state get the modem state bit flags
  • TIOCMBIS int *state add modem state bit flags, OR-ing in the new states
  • TIOCMBIC int *state clear modem state bit flags

The struct winsize *ws arguments use the winsize record:

   make-winsize free-winsize
   winsize-row winsize-col
   winsize-row-set! winsize-col-set!

The struct termios *term arguments use the term-attrs record from the stty egg.

The integer pointer arguments can be handled with pointers from the lolevel extension.


Alex Shinn


This egg is hosted on the CHICKEN Subversion repository:

If you want to check out the source code repository of this egg and you are not familiar with Subversion, see this page.




Ported to CHICKEN 5

Contents »