1.ioctl函数的功能
linux内核开发者想让设备的控制和数据的读写分开来做,对数据的读写通过read/write完成,对设备的控制通过ioctl函数完成。例如串口驱动,在进行数据收发前需要设置波特率,数据位,停止位等这些操作可以通过ioctl完成,设置好上述的工作方式后通过read/write完成数据的读写。
ioctl:用户设备的控制,比如摄像头,摄像头在拍摄照片的时候可以通过ioctl完成本次图片大小的设置,再比如lcd上的背光灯亮度也可以通过ioctl函数来控制
2.ioctl函数的API
#include <sys/ioctl.h> int ioctl(int fd, unsigned long request, ...); 功能:进行设备的控制 参数: @fd:文件描述符 @request:请求码,被内核编码(方向:是读还是写 && 第三个参数的大小) @...:可变参数,可以不写,如果写必须写地址 返回值:成功返回0,失败返回-1置位错误码 --------------------------------------------------------------------- fops: //应用层第二个和第三个参数传递给unlocked_ioctl第二个和第三个参数 long (*unlocked_ioctl) (struct file *, unsigned int cmd, unsigned long arg) { switch(cmd){ case LED_ON: 读取args地址中的值,然后控制对应的LED灯亮即可