TTY IOCTL 助手¶
-
unsigned int tty_chars_in_buffer(struct tty_struct *tty)¶
待处理的字符
参数
struct tty_struct *tty
终端
返回
设备私有输出队列中数据的字节数。如果未提供私有方法,则假定设备上没有队列。
-
unsigned int tty_write_room(struct tty_struct *tty)¶
写入队列空间
参数
struct tty_struct *tty
终端
返回
当前可以排队到此设备的字节数。结果应被视为保证,并且驱动程序提供的数值不能在写入后缩小超过写入的字节数。如果未提供方法,则始终返回 2K,并且数据可能会丢失,因为不会有流量控制。
-
void tty_driver_flush_buffer(struct tty_struct *tty)¶
丢弃内部缓冲区
参数
struct tty_struct *tty
终端
描述
丢弃此设备的内部输出缓冲区。如果未提供方法,则缓冲区无法进行硬件刷新,或者驱动程序端没有缓冲区。
-
void tty_unthrottle(struct tty_struct *tty)¶
流量控制
参数
struct tty_struct *tty
终端
描述
指示 tty 可以继续向下堆栈传输数据。获取 tty_struct->termios_rwsem
来防止并行节流/取消节流,并确保驱动程序在实现软件流量控制时可以始终如一地引用其自己的 termios 数据。
但是,驱动程序应记住,堆栈可以发出节流,然后更改流量控制方法,然后取消节流。
-
bool tty_throttle_safe(struct tty_struct *tty)¶
流量控制
参数
struct tty_struct *tty
终端
描述
指示 tty 应停止向下堆栈传输数据。tty_throttle_safe()
仅当 tty->flow_change 为 TTY_THROTTLE_SAFE
时才会尝试节流。防止在节流取决于节流之前评估的因素时,由于竞争条件而意外节流。
返回
如果 tty 已节流(或已被节流),则为 true
-
bool tty_unthrottle_safe(struct tty_struct *tty)¶
流量控制
参数
struct tty_struct *tty
终端
描述
类似于 tty_unthrottle()
,但仅当 tty->flow_change 为 TTY_UNTHROTTLE_SAFE
时才会尝试取消节流。防止在取消节流取决于取消节流之前评估的因素时,由于竞争条件而意外取消节流。
返回
如果 tty 已取消节流(或已被取消节流),则为 true
-
void tty_wait_until_sent(struct tty_struct *tty, long timeout)¶
等待 I/O 完成
参数
struct tty_struct *tty
我们正在等待的 tty
long timeout
我们将等待多长时间
描述
等待 tty 驱动程序中待处理的字符到达线路,或等待超时发生(例如,由于流量控制)。
锁定:无
-
void tty_termios_copy_hw(struct ktermios *new, const struct ktermios *old)¶
复制硬件设置
参数
struct ktermios *new
新的 termios
const struct ktermios *old
旧的 termios
描述
将硬件特定的终端设置位从 old termios 结构传播到 new 结构。这用于硬件不支持重新配置的情况,或者作为仅支持最小重新配置的某些情况下的助手。
-
bool tty_termios_hw_change(const struct ktermios *a, const struct ktermios *b)¶
检查设置更改
参数
const struct ktermios *a
termios
const struct ktermios *b
要比较的 termios
描述
检查影响哑设备的任何位是否在两个 termios 结构之间已更改,或者是否需要更改速度。
返回
如果需要更改,则为 true
-
unsigned char tty_get_char_size(unsigned int cflag)¶
获取字符大小
参数
unsigned int cflag
termios cflag 值
返回
字符的大小(以位为单位),取决于 cflag 的 CSIZE
设置
-
unsigned char tty_get_frame_size(unsigned int cflag)¶
获取帧的大小
参数
unsigned int cflag
termios cflag 值
描述
根据 cflag 的 CSIZE
、CSTOPB
和 PARENB
设置,获取帧的大小(以位为单位)。结果是字符大小、起始位和停止位的总和(每个一位),第二停止位(如果设置),以及校验位(如果设置)。
返回
帧的大小(以位为单位),取决于 cflag 的设置。
-
int tty_set_termios(struct tty_struct *tty, struct ktermios *new_termios)¶
更新 termios 值
参数
struct tty_struct *tty
要更新的 tty
struct ktermios *new_termios
期望的新值
描述
执行对此 tty 设置的 termios 值的更新。主 pty 的 termios 永远不应该设置。
-
int set_termios(struct tty_struct *tty, void __user *arg, int opt)¶
设置 tty 的 termios 值
参数
struct tty_struct *tty
终端设备
void __user *arg
用户数据
int opt
选项信息
描述
辅助函数,用于准备 termios 数据并在使用 tty_set_termios()
进行实际更改之前运行必要的其他函数。
锁定:调用的函数获取 tty_struct->ldisc_sem
和 tty_struct->termios_rwsem
锁
返回
成功时返回 0,否则返回错误
-
int set_sgttyb(struct tty_struct *tty, struct sgttyb __user *sgttyb)¶
设置旧式的终端值
参数
struct tty_struct *tty
tty 结构
struct sgttyb __user *sgttyb
指向旧式终端结构的指针
描述
从旧式 BSD 终端信息结构更新终端。
返回
成功时返回 0,否则返回错误
-
int tty_change_softcar(struct tty_struct *tty, bool enable)¶
载波更改 ioctl 辅助函数
参数
struct tty_struct *tty
要更新的 tty
bool enable
启用/禁用
CLOCAL
描述
对 CLOCAL
状态进行更改,并调用驱动程序层使其可见。
返回
成功时返回 0,否则返回错误
-
int tty_mode_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg)¶
与模式相关的 ioctl
参数
struct tty_struct *tty
ioctl 的 tty
unsigned int cmd
命令
unsigned long arg
ioctl 参数
描述
执行非线路规程特定的模式控制 ioctl。这旨在由线路规程调用,以确保它们提供一致的模式设置。
-
speed_t tty_get_baud_rate(const struct tty_struct *tty)¶
获取 tty 比特率
参数
const struct tty_struct *tty
要查询的 tty
返回
此终端的波特率,为整数
描述
锁定:调用者必须持有 termios 锁。