cfsetispeed()

Updated: April 19, 2023

Set the input baud rate in a termios structure

Synopsis:

#include <termios.h>

int cfsetispeed( 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 cfsetispeed() function sets the input 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 cfsetispeed() doesn't indicate an error.
  • Attempts to set input baud rates to a value that's different from the output baud rate, when the hardware doesn't support split baud rates, cause the input baud rate to be ignored, but no error is generated.

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 input baud rate
     */
    speed = 9600;
    cfsetispeed( &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