rtems-docs/posix-users/device_and_class_specific.rst
2019-01-11 07:22:01 +01:00

467 lines
9.6 KiB
ReStructuredText

.. SPDX-License-Identifier: CC-BY-SA-4.0
.. Copyright (C) 1988, 2002 On-Line Applications Research Corporation (OAR)
Device- and Class- Specific Functions Manager
#############################################
Introduction
============
The device- and class- specific functions manager is ...
The directives provided by the device- and class- specific functions manager
are:
- cfgetispeed_ - Reads terminal input baud rate
- cfgetospeed_ - Reads terminal output baud rate
- cfsetispeed_ - Sets terminal input baud rate
- cfsetospeed_ - Set terminal output baud rate
- tcgetattr_ - Gets terminal attributes
- tcsetattr_ - Set terminal attributes
- tcsendbreak_ - Sends a break to a terminal
- tcdrain_ - Waits for all output to be transmitted to the terminal
- tcflush_ - Discards terminal data
- tcflow_ - Suspends/restarts terminal output
- tcgetpgrp_ - Gets foreground process group ID
- tcsetpgrp_ - Sets foreground process group ID
Background
==========
There is currently no text in this section.
Operations
==========
There is currently no text in this section.
Directives
==========
This section details the device- and class- specific functions manager's
directives. A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage,
and status codes.
.. _cfgetispeed:
cfgetispeed - Reads terminal input baud rate
--------------------------------------------
.. index:: cfgetispeed
.. index:: reads terminal input baud rate
**CALLING SEQUENCE:**
.. code-block:: c
#include <termios.h>
speed_t cfgetispeed(
const struct termios *termios_p
);
**STATUS CODES:**
The ``cfgetispeed()`` function returns a code for baud rate.
**DESCRIPTION:**
The ``cfsetispeed()`` function stores a code for the terminal speed stored in a
struct termios. The codes are defined in ``<termios.h>`` by the macros ``BO``,
``B50``, ``B75``, ``B110``, ``B134``, ``B150``, ``B200``, ``B300``, ``B600``,
``B1200``, ``B1800``, ``B2400``, ``B4800``, ``B9600``, ``B19200``, and
``B38400``.
The ``cfsetispeed()`` function does not do anything to the hardware. It merely
stores a value for use by ``tcsetattr()``.
**NOTES:**
Baud rates are defined by symbols, such as ``B110``, ``B1200``, ``B2400``. The
actual number returned for any given speed may change from system to system.
.. _cfgetospeed:
cfgetospeed - Reads terminal output baud rate
---------------------------------------------
.. index:: cfgetospeed
.. index:: reads terminal output baud rate
**CALLING SEQUENCE:**
.. code-block:: c
#include <termios.h>
speed_t cfgetospeed(
const struct termios *termios_p
);
**STATUS CODES:**
The ``cfgetospeed()`` function returns the termios code for the baud rate.
**DESCRIPTION:**
The ``cfgetospeed()`` function returns a code for the terminal speed stored in
a ``struct termios``. The codes are defined in ``<termios.h>`` by the macros
``BO``, ``B50``, ``B75``, ``B110``, ``B134``, ``B150``, ``B200``, ``B300``,
``B600``, ``B1200``, ``B1800``, ``B2400``, ``B4800``, ``B9600``, ``B19200``,
and ``B38400``.
The ``cfgetospeed()`` function does not do anything to the hardware. It merely
returns the value stored by a previous call to ``tcgetattr()``.
**NOTES:**
Baud rates are defined by symbols, such as ``B110``, ``B1200``, ``B2400``. The
actual number returned for any given speed may change from system to system.
.. _cfsetispeed:
cfsetispeed - Sets terminal input baud rate
-------------------------------------------
.. index:: cfsetispeed
.. index:: sets terminal input baud rate
**CALLING SEQUENCE:**
.. code-block:: c
#include <termios.h>
int cfsetispeed(
struct termios *termios_p,
speed_t speed
);
**STATUS CODES:**
The ``cfsetispeed()`` function returns a zero when successful and returns -1
when an error occurs.
**DESCRIPTION:**
The ``cfsetispeed()`` function stores a code for the terminal speed stored in a
struct termios. The codes are defined in ``<termios.h>`` by the macros ``BO``,
``B50``, ``B75``, ``B110``, ``B134``, ``B150``, ``B200``, ``B300``, ``B600``,
``B1200``, ``B1800``, ``B2400``, ``B4800``, ``B9600``, ``B19200``, and
``B38400``.
**NOTES:**
This function merely stores a value in the ``termios`` structure. It does not
change the terminal speed until a ``tcsetattr()`` is done. It does not detect
impossible terminal speeds.
.. _cfsetospeed:
cfsetospeed - Sets terminal output baud rate
--------------------------------------------
.. index:: cfsetospeed
.. index:: sets terminal output baud rate
**CALLING SEQUENCE:**
.. code-block:: c
#include <termios.h>
int cfsetospeed(
struct termios *termios_p,
speed_t speed
);
**STATUS CODES:**
The ``cfsetospeed()`` function returns a zero when successful and
returns -1 when an error occurs.
**DESCRIPTION:**
The ``cfsetospeed()`` function stores a code for the terminal speed stored in a
struct ``termios``. The codes are defiined in ``<termios.h>`` by the macros
``BO``, ``B50``, ``B75``, ``B110``, ``B134``, ``B150``, ``B200``, ``B300``,
``B600``, ``B1200``, ``B1800``, ``B2400``, ``B4800``, ``B9600``, ``B19200``,
and ``B38400``.
The ``cfsetospeed()`` function does not do anything to the hardware. It merely
stores a value for use by ``tcsetattr()``.
**NOTES:**
This function merely stores a value in the ``termios`` structure. It does not
change the terminal speed until a ``tcsetattr()`` is done. It does not detect
impossible terminal speeds.
.. _tcgetattr:
tcgetattr - Gets terminal attributes
------------------------------------
.. index:: tcgetattr
.. index:: gets terminal attributes
**CALLING SEQUENCE:**
.. code-block:: c
#include <termios.h>
int tcgetattr(
int fildes,
struct termios *termios_p
);
**STATUS CODES:**
.. list-table::
:class: rtems-table
* - ``EBADF``
- Invalid file descriptor
* - ``ENOOTY``
- Terminal control function attempted for a file that is not a terminal.
**DESCRIPTION:**
The ``tcgetattr()`` gets the parameters associated with the terminal referred
to by ``fildes`` and stores them into the ``termios()`` structure pointed to by
``termios_p``.
**NOTES:**
NONE
.. _tcsetattr:
tcsetattr - Set terminal attributes
-----------------------------------
.. index:: tcsetattr
.. index:: set terminal attributes
**CALLING SEQUENCE:**
.. code-block:: c
#include <termios.h>
int tcsetattr(
int fildes,
int optional_actions,
const struct termios *termios_p
);
**STATUS CODES:**
.. list-table::
:class: rtems-table
* - ``E``
- The
**DESCRIPTION:**
**NOTES:**
.. _tcsendbreak:
tcsendbreak - Sends a break to a terminal
-----------------------------------------
.. index:: tcsendbreak
.. index:: sends a break to a terminal
**CALLING SEQUENCE:**
.. code-block:: c
#include <termios.h>
int tcsendbreak(
int fildes,
int duration
);
**STATUS CODES:**
.. list-table::
:class: rtems-table
* - ``E``
- The
**DESCRIPTION:**
**NOTES:**
This routine is not currently supported by RTEMS but could be
in a future version.
.. _tcdrain:
tcdrain - Waits for all output to be transmitted to the terminal.
-----------------------------------------------------------------
.. index:: tcdrain
.. index:: waits for all output to be transmitted to the terminal.
**CALLING SEQUENCE:**
.. code-block:: c
#include <termios.h>
int tcdrain(
int fildes
);
**STATUS CODES:**
.. list-table::
:class: rtems-table
* - ``EBADF``
- Invalid file descriptor
* - ``EINTR``
- Function was interrupted by a signal
* - ``ENOTTY``
- Terminal control function attempted for a file that is not a terminal.
**DESCRIPTION:**
The ``tcdrain()`` function waits until all output written to ``fildes`` has been
transmitted.
**NOTES:**
NONE
.. _tcflush:
tcflush - Discards terminal data
--------------------------------
.. index:: tcflush
.. index:: discards terminal data
**CALLING SEQUENCE:**
.. code-block:: c
#include <termios.h>
int tcflush(
int fildes,
int queue_selector
);
**STATUS CODES:**
.. list-table::
:class: rtems-table
* - ``E``
- The
**DESCRIPTION:**
**NOTES:**
This routine is not currently supported by RTEMS but could be in a future
version.
.. _tcflow:
tcflow - Suspends/restarts terminal output.
-------------------------------------------
.. index:: tcflow
.. index:: suspends/restarts terminal output.
**CALLING SEQUENCE:**
.. code-block:: c
#include <termios.h>
int tcflow(
int fildes,
int action
);
**STATUS CODES:**
.. list-table::
:class: rtems-table
* - ``E``
- The
**DESCRIPTION:**
**NOTES:**
This routine is not currently supported by RTEMS but could be in a future
version.
.. _tcgetpgrp:
tcgetpgrp - Gets foreground process group ID
--------------------------------------------
.. index:: tcgetpgrp
.. index:: gets foreground process group id
**CALLING SEQUENCE:**
.. code-block:: c
#include <unistd.h>
pid_t tcgetpgrp(
int fildes
);
**STATUS CODES:**
.. list-table::
:class: rtems-table
* - ``E``
- The
**DESCRIPTION:**
**NOTES:**
This routine is not currently supported by RTEMS but could be in a future
version.
.. _tcsetpgrp:
tcsetpgrp - Sets foreground process group ID
--------------------------------------------
.. index:: tcsetpgrp
.. index:: sets foreground process group id
**CALLING SEQUENCE:**
.. code-block:: c
#include <unistd.h>
int tcsetpgrp(
int fildes,
pid_t pgid_id
);
**STATUS CODES:**
.. list-table::
:class: rtems-table
* - ``E``
- The
**DESCRIPTION:**
**NOTES:**
This routine is not currently supported by RTEMS but could be in a future
version.