显示linux5.4源码中tcgetattr系统函数的源码
时间: 2023-12-14 15:38:38 浏览: 292
使用tcgetattr函数与tcsetattr函数控制终端.doc
在 Linux 5.4 的源代码中,tcgetattr() 函数的实现位于文件 drivers/tty/tty_ioctl.c 中。以下是函数的源代码:
```
/**
* tcgetattr - Get terminal attributes
* @fd: File descriptor to get attributes of
* @termiosp: Termios structure to fill
*
* Get the current serial port configuration.
* Locking: none (it's a syscall)
*/
int tcgetattr(int fd, struct termios *termiosp)
{
struct tty_struct *tty;
int retval = 0;
tty = get_current_tty();
if (!tty)
return -ENOTTY;
if (tty->ops->getattr)
retval = tty->ops->getattr(tty, termiosp);
else
retval = -EINVAL;
tty_kref_put(tty);
return retval;
}
```
这个函数首先获取当前进程所在的 tty 结构体指针,然后根据 tty 结构体的操作函数指针调用对应的 getattr() 函数,将获取到的终端属性填充到传入的 termios 结构体中。如果当前的 tty 结构体没有 getattr() 函数指针,则返回 EINVAL 错误码。最后释放 tty 结构体的引用计数。
阅读全文