Expand description
ioctl 请求码定义
该模块定义了各种设备类型的 ioctl 请求码,遵循 Linux 标准。
§ioctl 编码规则
Linux ioctl 请求码通常使用 _IO, _IOR, _IOW, _IOWR 宏构造:
_IO(type, nr): 无参数_IOR(type, nr, size): 读取数据_IOW(type, nr, size): 写入数据_IOWR(type, nr, size): 读写数据
参考:include/uapi/asm-generic/ioctl.h
Structs§
- Ifconf
- 接口配置结构(用于 SIOCGIFCONF)
- Ifreq
- RtcTime
- RTC 时间结构体(对应 Linux struct rtc_time)
- Termios
- 终端属性结构(用于 TCGETS/TCSETS)
- WinSize
- 终端窗口大小(用于 TIOCGWINSZ/TIOCSWINSZ)
Constants§
- BLKFLSBUF
- BLKGETSIZE
- 块设备
- BLKGETSIZ
E64 - FIGETBSZ
- 获取文件系统块大小(long)
- FIOASYNC
- 设置/清除异步 I/O 通知(int)
- FIONBIO
- 设置/清除非阻塞 I/O 标志(int)
- FIONREAD
- 获取可读字节数(int)
- IFNAMSIZ
- 最大接口名称长度
- IOC_
DIRBITS - IOC_
DIRSHIFT - IOC_
NONE - ioctl 方向:无数据传输
- IOC_
NRBITS - ioctl 编码掩码
- IOC_
NRSHIFT - IOC_
READ - ioctl 方向:读取(内核 -> 用户空间)
- IOC_
SIZEBITS - IOC_
SIZESHIFT - IOC_
TYPEBITS - IOC_
TYPESHIFT - IOC_
WRITE - ioctl 方向:写入(用户空间 -> 内核)
- NCCS
- 特殊控制字符数量(Linux asm-generic 标准)
- RTC_
RD_ TIME - RTC(实时时钟)设备 size = sizeof(struct rtc_time) = 9 * sizeof(int) = 36
- RTC_
SET_ TIME - SIOCGIFADDR
- 获取接口地址(struct ifreq)
- SIOCGIFBRDADDR
- 获取接口广播地址(struct ifreq)
- SIOCGIFCONF
- 获取接口列表(struct ifconf)
- SIOCGIFFLAGS
- 获取接口标志(struct ifreq)
- SIOCGIFHWADDR
- 获取接口硬件地址/MAC(struct ifreq)
- SIOCGIFINDEX
- 获取接口索引(struct ifreq)
- SIOCGIFMTU
- 获取接口 MTU(struct ifreq)
- SIOCGIFNAME
- Socket ioctl 魔数
- SIOCGIFNAME_
BY_ INDEX - 根据索引获取接口名称(struct ifreq)
- SIOCGIFNETMASK
- 获取接口网络掩码(struct ifreq)
- SIOCSIFADDR
- 设置接口地址(struct ifreq)
- SIOCSIFBRDADDR
- 设置接口广播地址(struct ifreq)
- SIOCSIFFLAGS
- 设置接口标志(struct ifreq)
- SIOCSIFHWADDR
- 设置接口硬件地址/MAC(struct ifreq)
- SIOCSIFMTU
- 设置接口 MTU(struct ifreq)
- SIOCSIFNETMASK
- 设置接口网络掩码(struct ifreq)
- TCGETS
- 终端 ioctl 魔数
- TCSETS
- TCSETSF
- TCSETSW
- TIOCEXCL
- 独占使用终端(void)
- TIOCGPGRP
- 获取终端进程组 ID(pid_t)
- TIOCGWINSZ
- 获取终端窗口大小(struct winsize)
- TIOCINQ
- 获取输入队列中的字节数(int)
- TIOCNXCL
- 取消独占使用(void)
- TIOCOUTQ
- 获取输出队列中的字节数(int)
- TIOCSCTTY
- 设置控制终端(void)- busybox init 需要
- TIOCSPGRP
- 设置终端进程组 ID(pid_t)
- TIOCSWINSZ
- 设置终端窗口大小(struct winsize)
- VT_
OPENQRY - 查询可用的虚拟终端(int *)- 可选,用于 VT 切换
Functions§
- _IO
- 构造 ioctl 请求码(无参数)
- _IOC
- ioctl 请求码构造函数
- _IOC_
DIR - 从请求码中提取方向
- _IOC_NR
- 从请求码中提取编号
- _IOC_
SIZE - 从请求码中提取数据大小
- _IOC_
TYPE - 从请求码中提取类型
- _IOR
- 构造 ioctl 请求码(读取数据)
- _IOW
- 构造 ioctl 请求码(写入数据)
- _IOWR
- 构造 ioctl 请求码(读写数据)
Unions§
- Ifreq
Ifru - 接口请求结构(用于 SIOC* 操作)