跳转至

ioctl

ioctl 模块提供对已打开文件描述符执行设备控制操作的接口,通过请求码指定具体操作类型。该模块包含 ioctl 函数及大量相关宏定义,涵盖线路规程、终端控制、套接字控制等设备操作请求码。

头文件清单

#include "open_source/musl/include/sys/ioctl.h"

接口清单

接口名称 功能简述
ioctl 对文件描述符执行指定的设备控制操作

Macros

N_TTY

#define N_TTY 0

N_SLIP

#define N_SLIP 1

N_MOUSE

#define N_MOUSE 2

N_PPP

#define N_PPP 3

N_STRIP

#define N_STRIP 4

N_AX25

#define N_AX25 5

N_X25

#define N_X25 6

N_6PACK

#define N_6PACK 7

N_MASC

#define N_MASC 8

N_R3964

#define N_R3964 9

N_PROFIBUS_FDL

#define N_PROFIBUS_FDL 10

N_IRDA

#define N_IRDA 11

N_SMSBLOCK

#define N_SMSBLOCK 12

N_HDLC

#define N_HDLC 13

N_SYNC_PPP

#define N_SYNC_PPP 14

N_HCI

#define N_HCI 15

N_GIGASET_M101

#define N_GIGASET_M101 16

N_SLCAN

#define N_SLCAN 17

N_PPS

#define N_PPS 18

N_V253

#define N_V253 19

N_CAIF

#define N_CAIF 20

N_GSM0710

#define N_GSM0710 21

N_TI_WL

#define N_TI_WL 22

N_TRACESINK

#define N_TRACESINK 23

N_TRACEROUTER

#define N_TRACEROUTER 24

N_NCI

#define N_NCI 25

N_SPEAKUP

#define N_SPEAKUP 26

N_NULL

#define N_NULL 27

TIOCPKT_DATA

#define TIOCPKT_DATA 0

TIOCPKT_FLUSHREAD

#define TIOCPKT_FLUSHREAD 1

TIOCPKT_FLUSHWRITE

#define TIOCPKT_FLUSHWRITE 2

TIOCPKT_STOP

#define TIOCPKT_STOP 4

TIOCPKT_START

#define TIOCPKT_START 8

TIOCPKT_NOSTOP

#define TIOCPKT_NOSTOP 16

TIOCPKT_DOSTOP

#define TIOCPKT_DOSTOP 32

TIOCPKT_IOCTL

#define TIOCPKT_IOCTL 64

TIOCSER_TEMT

#define TIOCSER_TEMT 1

SIOCADDRT

#define SIOCADDRT 0x890B

SIOCDELRT

#define SIOCDELRT 0x890C

SIOCRTMSG

#define SIOCRTMSG 0x890D

SIOCGIFNAME

#define SIOCGIFNAME 0x8910
#define SIOCSIFLINK 0x8911

SIOCGIFCONF

#define SIOCGIFCONF 0x8912

SIOCGIFFLAGS

#define SIOCGIFFLAGS 0x8913

SIOCSIFFLAGS

#define SIOCSIFFLAGS 0x8914

SIOCGIFADDR

#define SIOCGIFADDR 0x8915

SIOCSIFADDR

#define SIOCSIFADDR 0x8916

SIOCGIFDSTADDR

#define SIOCGIFDSTADDR 0x8917

SIOCSIFDSTADDR

#define SIOCSIFDSTADDR 0x8918

SIOCGIFBRDADDR

#define SIOCGIFBRDADDR 0x8919

SIOCSIFBRDADDR

#define SIOCSIFBRDADDR 0x891a

SIOCGIFNETMASK

#define SIOCGIFNETMASK 0x891b

SIOCSIFNETMASK

#define SIOCSIFNETMASK 0x891c

SIOCGIFMETRIC

#define SIOCGIFMETRIC 0x891d

SIOCSIFMETRIC

#define SIOCSIFMETRIC 0x891e

SIOCGIFMEM

#define SIOCGIFMEM 0x891f

SIOCSIFMEM

#define SIOCSIFMEM 0x8920

SIOCGIFMTU

#define SIOCGIFMTU 0x8921

SIOCSIFMTU

#define SIOCSIFMTU 0x8922

SIOCSIFNAME

#define SIOCSIFNAME 0x8923

SIOCSIFHWADDR

#define SIOCSIFHWADDR 0x8924

SIOCGIFENCAP

#define SIOCGIFENCAP 0x8925

SIOCSIFENCAP

#define SIOCSIFENCAP 0x8926

SIOCGIFHWADDR

#define SIOCGIFHWADDR 0x8927

SIOCGIFSLAVE

#define SIOCGIFSLAVE 0x8929

SIOCSIFSLAVE

#define SIOCSIFSLAVE 0x8930

SIOCADDMULTI

#define SIOCADDMULTI 0x8931

SIOCDELMULTI

#define SIOCDELMULTI 0x8932

SIOCGIFINDEX

#define SIOCGIFINDEX 0x8933

SIOGIFINDEX

#define SIOGIFINDEX SIOCGIFINDEX

SIOCSIFPFLAGS

#define SIOCSIFPFLAGS 0x8934

SIOCGIFPFLAGS

#define SIOCGIFPFLAGS 0x8935

SIOCDIFADDR

#define SIOCDIFADDR 0x8936

SIOCSIFHWBROADCAST

#define SIOCSIFHWBROADCAST 0x8937

SIOCGIFCOUNT

#define SIOCGIFCOUNT 0x8938

SIOCGIFBR

#define SIOCGIFBR 0x8940

SIOCSIFBR

#define SIOCSIFBR 0x8941

SIOCGIFTXQLEN

#define SIOCGIFTXQLEN 0x8942

SIOCSIFTXQLEN

#define SIOCSIFTXQLEN 0x8943

SIOCETHTOOL

#define SIOCETHTOOL 0x8946

SIOCDARP

#define SIOCDARP 0x8953

SIOCGARP

#define SIOCGARP 0x8954

SIOCSARP

#define SIOCSARP 0x8955

SIOCDRARP

#define SIOCDRARP 0x8960

SIOCGRARP

#define SIOCGRARP 0x8961

SIOCSRARP

#define SIOCSRARP 0x8962

SIOCGIFMAP

#define SIOCGIFMAP 0x8970

SIOCSIFMAP

#define SIOCSIFMAP 0x8971

SIOCADDDLCI

#define SIOCADDDLCI 0x8980

SIOCDELDLCI

#define SIOCDELDLCI 0x8981

SIOCDEVPRIVATE

#define SIOCDEVPRIVATE 0x89F0

SIOCPROTOPRIVATE

#define SIOCPROTOPRIVATE 0x89E0

Functions

ioctl

函数声明

int ioctl(int, int, ...)

头文件清单

#include "open_source/musl/include/sys/ioctl.h"

功能说明

  • 对已打开的文件描述符执行指定的设备控制操作
  • 通过请求码(request)指定具体操作类型,第三个参数为可变参数,根据请求码传入对应的数据
  • 支持终端控制、套接字控制、文件描述符属性设置等多种设备操作

入参

名称 参数类型 详细说明 约束取值范围
fd int 已打开的文件描述符 非负整数
request int 设备控制请求码 由具体驱动或协议定义的请求码常量
... ... 可变参数,根据request不同传入不同类型的参数指针或值 由request决定

返回值

  • 返回类型:int
返回值 文字含义 触发场景
>=0 执行成功 设备控制操作成功完成
-1 执行失败 文件描述符无效、请求码不支持或参数非法,errno被设置为相应错误码

前置条件

  • 调用时序约束:参数fd必须为已通过open()等接口成功打开的有效文件描述符
  • 依赖关系:当前接口依赖底层驱动已实现对应的ioctl操作方法
  • 上下文限制:request参数必须与fd所关联的设备类型匹配,不同设备类型支持不同的请求码集合