cfsetospeed()

Updated: April 19, 2023

Set the output baud rate in a termios structure

Synopsis:

#include <termios.h>

int cfsetospeed( struct termios *termios_p,
                 speed_t speed );

Arguments:

termios_p
A pointer to a termios structure that describes the terminal's control attributes.
speed
The new speed. Valid values for speed are defined in <termios.h>.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The cfsetospeed() function sets the output baud rate within the termios structure pointed to by termios_p to be speed.

You can get a valid termios control structure for an opened device by calling tcgetattr().

Note:
  • The new baud rate isn't effective until you call tcsetattr(), with this modified termios structure.
  • Attempts to set baud rates to values that aren't supported by the hardware are ignored, and cause tcsetattr() to return an error, but cfsetospeed() doesn't indicate an error.

Setting the output baud rate to B0 causes the connection to be dropped. If termios_p represents a modem, the modem control lines are turned off.

Returns:

0
Success.
-1
An error occurred (errno is set).

Errors:

EINVAL
One of the arguments is invalid.
ENOTTY
This function isn't supported by the system.

Examples:

#include <termios.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

int main( void )
  {
    int fd;
    struct termios termios_p;
    speed_t speed;

    fd = open( "/dev/ser1", O_RDWR );
    tcgetattr( fd, &termios_p);

    /*
     *    Set output baud rate
     */
    speed = B9600;
    cfsetospeed( &termios_p, speed );
    tcsetattr( fd, TCSADRAIN, &termios_p);

    close( fd );
    return EXIT_SUCCESS;
  }

Classification:

POSIX 1003.1

Safety:  
Cancellation point No
Interrupt handler Yes
Signal handler Yes
Thread Yes