2416开发记录四: ioctl与unlocked_ioctl区别

发布者:信息巫师最新更新时间:2019-01-17 来源: eefocus关键字:ioctl  unlocked_ioctl 手机看文章 扫描二维码
随时随地手机看文章

ioctl函数的实现


首先说明在2.6.36以后ioctl函数已经不再存在了,而是用unlocked_ioctl和compat_ioctl两个函数实现以前版本的ioctl函数。同时在参数方面也发生了一定程度的改变,去除了原来ioctl中的struct inode参数,同时改变了返回值。


但是驱动设计过程中存在的问题变化并不是很大,**同样在应用程序设计中我们还是采用ioctl实现访问,而并不是unlocked_ioctl函数,因此我们还可以称之为ioctl函数的实现。


原来的驱动程序


static const struct file_operations globalmem_fops=

{

.owner=THIS_MODULE,

.llseek=globalmem_llseek,

.open=globalmem_open,

.read=globalmem_read,

.write=globalmem_write,

.ioctl=globalmem_ioctl,

.release=globalmem_release,

};


int globalmem_ioctl(struct inode* inode,struct file* filp, unsigned int cmd,unsigned long arg)


{


switch (cmd)


  {


   case:XXX:   ...


    ……


  }


}


改变后的


static const struct file_operations globalmem_fops=

{

.owner=THIS_MODULE,

.llseek=globalmem_llseek,

.open=globalmem_open,

.read=globalmem_read,

.write=globalmem_write,

.unlocked_ioctl=globalmem_ioctl,

.release=globalmem_release,

};


int globalmem_ioctl(struct file* filp, unsigned int cmd,unsigned long arg)//没有inode参数!


{


switch (cmd)


  {


   case:XXX:   ...


    ……


  }


}


关键字:ioctl  unlocked_ioctl 引用地址:2416开发记录四: ioctl与unlocked_ioctl区别

上一篇:2416开发记录三:简单LED驱动及应用程序
下一篇:2416开发记录五: misc设备驱动

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved