mirror of
https://git.rtems.org/rtems-docs/
synced 2025-05-15 01:06:40 +08:00
467 lines
9.6 KiB
ReStructuredText
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.
|