ioctl
ioctl 模块提供对已打开文件描述符执行设备控制操作的接口,通过请求码指定具体操作类型。该模块包含 ioctl 函数及大量相关宏定义,涵盖线路规程、终端控制、套接字控制等设备操作请求码。
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| ioctl | 对文件描述符执行指定的设备控制操作 |
Macros
N_TTY
N_SLIP
N_MOUSE
N_PPP
N_STRIP
N_AX25
N_X25
N_6PACK
N_MASC
N_R3964
N_PROFIBUS_FDL
N_IRDA
N_SMSBLOCK
N_HDLC
N_SYNC_PPP
N_HCI
N_GIGASET_M101
N_SLCAN
N_PPS
N_V253
N_CAIF
N_GSM0710
N_TI_WL
N_TRACESINK
N_TRACEROUTER
N_NCI
N_SPEAKUP
N_NULL
TIOCPKT_DATA
TIOCPKT_FLUSHREAD
TIOCPKT_FLUSHWRITE
TIOCPKT_STOP
TIOCPKT_START
TIOCPKT_NOSTOP
TIOCPKT_DOSTOP
TIOCPKT_IOCTL
TIOCSER_TEMT
SIOCADDRT
SIOCDELRT
SIOCRTMSG
SIOCGIFNAME
SIOCSIFLINK
SIOCGIFCONF
SIOCGIFFLAGS
SIOCSIFFLAGS
SIOCGIFADDR
SIOCSIFADDR
SIOCGIFDSTADDR
SIOCSIFDSTADDR
SIOCGIFBRDADDR
SIOCSIFBRDADDR
SIOCGIFNETMASK
SIOCSIFNETMASK
SIOCGIFMETRIC
SIOCSIFMETRIC
SIOCGIFMEM
SIOCSIFMEM
SIOCGIFMTU
SIOCSIFMTU
SIOCSIFNAME
SIOCSIFHWADDR
SIOCGIFENCAP
SIOCSIFENCAP
SIOCGIFHWADDR
SIOCGIFSLAVE
SIOCSIFSLAVE
SIOCADDMULTI
SIOCDELMULTI
SIOCGIFINDEX
SIOGIFINDEX
SIOCSIFPFLAGS
SIOCGIFPFLAGS
SIOCDIFADDR
SIOCSIFHWBROADCAST
SIOCGIFCOUNT
SIOCGIFBR
SIOCSIFBR
SIOCGIFTXQLEN
SIOCSIFTXQLEN
SIOCETHTOOL
SIOCDARP
SIOCGARP
SIOCSARP
SIOCDRARP
SIOCGRARP
SIOCSRARP
SIOCGIFMAP
SIOCSIFMAP
SIOCADDDLCI
SIOCDELDLCI
SIOCDEVPRIVATE
SIOCPROTOPRIVATE
Functions
ioctl
函数声明
头文件清单
功能说明
- 对已打开的文件描述符执行指定的设备控制操作
- 通过请求码(request)指定具体操作类型,第三个参数为可变参数,根据请求码传入对应的数据
- 支持终端控制、套接字控制、文件描述符属性设置等多种设备操作
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| fd | int | 已打开的文件描述符 | 非负整数 |
| request | int | 设备控制请求码 | 由具体驱动或协议定义的请求码常量 |
| ... | ... | 可变参数,根据request不同传入不同类型的参数指针或值 | 由request决定 |
返回值
- 返回类型:int
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| >=0 | 执行成功 | 设备控制操作成功完成 |
| -1 | 执行失败 | 文件描述符无效、请求码不支持或参数非法,errno被设置为相应错误码 |
前置条件
- 调用时序约束:参数fd必须为已通过open()等接口成功打开的有效文件描述符
- 依赖关系:当前接口依赖底层驱动已实现对应的ioctl操作方法
- 上下文限制:request参数必须与fd所关联的设备类型匹配,不同设备类型支持不同的请求码集合