ioctl接口
来源:互联网 发布:淘宝店铺号码怎么查找 编辑:程序博客网 时间:2024/05/17 08:43
ioctl是设备驱动程序中对设备的I/O通道进行管理的函数,程序可以通过ioctl向设备发送命令、参数配置等信息。file_operations结构中对应的ioctl接口如下:
- int (*ioctl) (struct inode *inode, struct file
*filp,unsigned int cmd, unsigned long arg);
其中cmd是命令类型,arg是参数。
例1.5 字符设备ioctl实例
代码见光盘\src\1drivermodel\1-5ioctl。核心代码如下所示:
接下来编写一个应用程序,参考代码如下:
- //内核ioctl接口
- int simple_ioctl(struct inode *inode, struct file *filp,unsigned int cmd, unsigned long arg)
- {
- switch(cmd)
- {
- case COMMAND1:
- memset(demoBuffer,0x31,256);
- break;
- case COMMAND2:
- memset(demoBuffer,0x32,256);
- break;
- default:
- return -EFAULT;
- break;
- }
- return 0;
- }
- struct file_operations simple_fops = {
- .owner = THIS_MODULE,
- .ioctl = simple_ioctl,
- .open = simple_open,
- .release = simple_release,
- };
本例运行结果如下:
- #define COMMAND1 1
- #define COMMAND2 2
- void main(void)
- {
- int fd;
- int i;
- char data[256];
- int retval;
- fd=open("/dev/fgj",O_RDWR);
- if(fd==-1)
- {
- perror("error open\n");
- exit(-1);
- }
- printf("open /dev/fgj successfully\n");
- //应用层IOCTL控制
- retval=ioctl(fd,COMMAND1,0);
- if(retval==-1)
- {
- perror("ioctl error\n");
- exit(-1);
- }
- printf("send command1 successfully\n");
- retval=ioctl(fd,COMMAND2,0);
- if(retval==-1)
- {
- perror("ioctl error\n");
- exit(-1);
- }
- printf("send command1 successfully\n");
- close(fd);
- }
- [root@urbetter /home]# insmod demo.ko
- [root@urbetter /home]# mknod /dev/fgj c 224 0
- [root@urbetter /home]# ./test
- open /dev/fgj successfully
- send command1 successfully
- send command1 successfully
0 0
- ioctl接口
- v4l2 编程接口 IOCTL
- Linux标准ioctl接口
- v4l2编程接口-----ioctl
- IOCTL接口函数解析
- linux驱动--ioctl接口
- ioctl 函数与网络接口
- ioctl 开启/关闭网络接口
- ioctl 函数与网络接口
- ioctl 函数与网络接口
- 接口操作——ioctl
- ioctl 函数与网络接口
- ioctl 函数与网络接口
- ioctl---操作设备的接口
- ioctl获取网络接口信息
- v4l2 编程接口 — ioctl
- Linux设备驱动--第六章 ioctl接口
- 关于网络接口的ioctl使用
- MySQL数据库零碎总结
- webuploader
- 字符设备的读写
- 应用程序本地化
- CString对象的一种错误的使用方式
- ioctl接口
- js学习小结(三)2014.4.18-外边距合并,负边距和浏览器渲染,盒模型
- Java中内存中的Heap(堆)、Stack(栈)与程序运行的关系
- My97DatePicker日历实现开始日期小于结束日期验证
- seek接口
- poj 2565 Ants (KM+思维)
- Java知识总结——LinkedList和ArrayList的区别
- OPENCV中滑动条的使用
- The Right Way to Swizzle in Objective-C