Module ioctl

Module ioctl 

Source
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
块设备
BLKGETSIZE64
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§

IfreqIfru
接口请求结构(用于 SIOC* 操作)