2416开发记录四: ioctl与unlocked_ioctl区别_ioctl和unioctl区别_起点的博客-程序员秘密

技术标签: 嵌入式linux  s3c2416  

解释一下上一篇博客的相关知识点

驱动中的unlockioctl函数

http://blog.csdn.net/zydlyq/article/details/50522773

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:   ...

    ……

  }

}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zydlyq/article/details/50522793

智能推荐

Linux搭建Git仓库后使用钩子实现代码web端自动部署_git自动部署到web线上环境_鹏!的博客-程序员秘密

Linux搭建Git仓库后使用钩子实现代码web端自动部署**1.在之前搭建的git基础上,我们在来操作进入到代码仓库例如: cd /home/git/test.git然后进入hooks cd hooks2.创建 post-receivevim post-receive写入文件并保存退出GIT_WORK_TREE=/var/www/kaka git checkout -f注意:以上该路径是代码部署的路径位置3.权限设置(这个命令就是给所有加上x执行权限)

vue父组件调用子组件的事件方法_远方与梦的博客-程序员秘密

子组件:foods<div id='app'>    <div class="box" v-show="showFlag">11111111111111</div></div><script>export default({data(){return{showFlag:false}},methods:{ show(){

GPE服务器监控系统搭建_gpe系统_alanzy123的博客-程序员秘密

GPE服务器监控系统搭建使用 Prometheus + Grafana + Exporter 监控服务器的运行状态相关概念微服务中的监控分根据作用领域分为三大类,Logging,Tracing,Metrics。Logging - 用于记录离散的事件。例如,应用程序的调试信息或错误信息。它是我们诊断问题的依据。比如我们说的ELK就是基于Logging。Metrics - 用于记录可聚合的数据。例如,队列的当前深度可被定义为一个度量值,在元素入队或出队时被更新;HTTP 请求个数可被定义为一个计数器,

编译bluez-5.25 通过 Linux环境下运行_sean_dw的博客-程序员秘密

本次编译的是bluez 5版本以上的,之前的版本不支持蓝牙4.0,只有5版本以上支持4.0.我的Linux宿主机是Ubuntu14.04版本本次编译参考http://wiki.beyondlogic.org/index.php?title=Cross_Compiling_BlueZ_Bluetooth_tools_for_ARMhttp://wiki.beyondlogic.org/index

oracle SGA_stevenfeng的博客-程序员秘密

文章来源:[url]http://blog.sina.com.cn/s/blog_5421dfd20100ffn8.html[/url]3.2 SGA系统全局区--System global area(SGA) 是一组共享的内存结构,它里面存储了oracle数据库实例(instance)的数据和控制文件信息。如果有多个用户同时连接到数据库,他们会共享这一区域,因此SGA也称之为Shar...

随便推点

Win10使用Anaconda安装Tensorflow2.0教程_囿于之间的博客-程序员秘密

Anaconda安装Tensorflow教程安装Anaconda下载资源安装成功验证安装TensorflowTensorflow环境配置安装成功验证PyCharm整合TensorFlow安装Anaconda下载资源官方下载地址: Anaconda官网安装成功验证将下载到的安装包一步步安装之后,打开电脑cmd终端或者anaconda自带的终端,输入命令conda --version验证是否安装成功。安装TensorflowTensorflow环境配置使用anaconda终端创建一个pyth

C++ 拆分字符串-copy()_weixin_30276935的博客-程序员秘密

c++拆分字符串方法:#include <iostream>#include <string>#include <sstream>#include <algorithm>#include <iterator>int main() {using namespace std;string sentence = "Something in th...

电主轴分析_weixin_43200116的博客-程序员秘密

国产化率低 电主轴成数控机床发展之痛 难点何在?  中国数控机床行业的发展令人瞩目,据中国机床工具工业协会提供的数据,2006年数控机床的产量达85756台,同比增长32.7%。但令人遗憾的是,作为数控机床关键功能部件的电主轴,无论是从产品品种、技术水平、可靠性和产业化程度等方面均与国外有一定差距,电主轴国产化率低,中高端产品主要依靠进口。对此,有关专家指出,如果不提高电主轴国产化率,一味依靠进口...

Linux性能检测常用的10个基本命令_linux常用检查命令_guoxiaojie_415的博客-程序员秘密

本文的内容主要来自对Netflix的一篇技术博客( Linux Performance Analysis in 60,000 Milliseconds(可能需要翻墙才能访问) ),并添加了一些自己的理解,仅供参考。一、常用检测性能的10个基本命令1. uptime$ uptime 23:51:26 up 21:31, 1 user, load average: 30.02...

论文实现:SR-GNN、DER 中用到的函数_Smarticle的博客-程序员秘密

np.arange():生成np数组x = np.arange(9.0) #生成0-8的np数组np.split() :np数组分割详见:https://blog.csdn.net/lthirdonel/article/details/88690923np.asarray() 与 np.array()array和asarray都可将结构数据转换为ndarray类型。但是...

html的锚点代码是多少,锚点标记的HTML代码是什么?_刘炳琦的博客-程序员秘密

满意答案likk75oj2017.09.13采纳率:49%等级:10已帮助:969人1234567891011121314151617181920212223242526272829303132333435363738html>div{height:500px;background:#1ab394;...

推荐文章

热门文章

相关标签