summaryrefslogblamecommitdiffstats
path: root/posix_users/device_and_class_specific.rst
blob: 24b2763df139a4fe08f271dcfc7ad20de395f541 (plain) (tree)
1
2
3
4
5
6

                                                



                                                            







                                                        

                                                                            
 
                                               
 
                                                
 
                                              
 
                                              
 
                                       
 
                                      
 
                                            
 
                                                                   
 
                                   
 
                                             
 
                                               
 
                                               













                                           

                                                                          


                                                             

                






                                            
                 


                        
                               







                                                            




                                                                               
 

                                                                               


          



                                                                              







                                             
                 

                        

                               







                                                                          




                                                                              
 

                                                                               


          



                                                                              







                                           
                 


                        

                             



                 

                                                                            


                




                                                                               


          




                                                                              







                                            
                 


                        

                             








                                                                 




                                                                               
 

                                                                              


          




                                                                              







                                    
                 



                        

                               



                 

                    
 



                                                                           


                


                                                                               




          

              






                                   
                 



                        


                                      



                 




                    




                

                






                                         
                 

                    
              



                 




                    







                                                             

            






                                                                  
                 



                        
                  



                 

                    
 





                                                                           


                

                                                                                




          

            






                                 
                 

                
              



                 




                    




                



                                                                         







                                             
                 

               
              



                 




                    




                



                                                                         







                                            
                 





                  




                    




                



                                                                         







                                            
                 





                  




                    




                

                                                                         
.. comment SPDX-License-Identifier: CC-BY-SA-4.0

.. COMMENT: COPYRIGHT (c) 1988-2002.
.. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved.

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>
    int cfgetispeed(
        const struct 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>
        int cfgetospeed(
        const struct 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 *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 *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>
    #include <unistd.h>
    int tcgetattr(
        int             fildes,
        struct 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>
    #include <unistd.h>
    int tcsetattr(
        int                   fildes,
        int                   options,
        const struct termios *tp
    );

**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

    int tcsendbreak(
        int fd
    );

**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>
    #include <unistd.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

    int tcflush(
        int fd
    );

**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

    int tcflow(
        int fd
    );

**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

    int tcgetpgrp(
    );

**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

    int tcsetpgrp(
    );

**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.