chickadee » ioctl

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.

Procedures

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.

Author

Alex Shinn

Repository

This egg is hosted on the CHICKEN Subversion repository:

https://anonymous@code.call-cc.org/svn/chicken-eggs/release/5/ioctl

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

License

BSD

History

0.3
Ported to CHICKEN 5

Contents »