当前位置:  技术问答>linux和unix

请教下,应用程序使用通过驱动程序使用设备的过程

    来源: 互联网  发布时间:2016-08-31

    本文导语:  我们在编写驱动程序的时候,我们定义了很多的方法:open、write等,并通过file_operations结构跟设备建立联系,之间还用到了file结构、inode结构,但是具体的流程不是很清楚,希望高人解析一下。 编写驱动程序的时候...

我们在编写驱动程序的时候,我们定义了很多的方法:open、write等,并通过file_operations结构跟设备建立联系,之间还用到了file结构、inode结构,但是具体的流程不是很清楚,希望高人解析一下。

编写驱动程序的时候,定义的方法:open、write等方法是怎么被用户空间的应用程序调用的咧?

最好能给个例子:像简单设备鼠标的使用过程

谢谢

|
在用户态,进程打开一个文件,就获得了一个fd,一个数值,它对应内核进程结构体task_struct的一个字段files_struct中的一个file数组fd_array的index。
所有对这个fd的操作都传递到这个file上。这里的file是一个运行期概念,在运行期间创建和删除。
inode可以理解为一个磁盘文件的关键信息。
比如我们在用户态open一个文件,那么会查找当前进程的fd_array的空闲file,之后根据文件名称和路径,找到对应的文件,获取这个文件的inode,然后将这个inode和file关联,之后会将这个空闲file索引传递到用户态。
而file_operation,表示如何操作这个file。比如read系统调用,需要在内核态通过file_operation的read钩子指定如何从inode对应的磁盘文件上读取。

--------
这些操作都是linux的VFS完成的。

|
open系统调用->内核态->file_operation->open对应回调~~~~

|
用户程序调用 open打开某个设备 这个会调用open的系统调用 旧的接口是sys_open  现在用宏了,具体怎么拼记不住。
然后sys_open调用一系列的vfs层代码(inode file这些都在这里用到)  最后会通过函数指针调用驱动提供的open   2楼说的比较清楚

    
 
 

您可能感兴趣的文章:

  • 在linux下面怎么安程序啊?我刚裝了一个 linux,下了一个迅雷安装程序,可是不知道怎么安装啊?真心请教。
  • 菜鸟请教,应用程序如何判断驱动程序已经挂载成功
  • 请教!Linux系统C开发的程序,为什么我的程序运行时内存持续增长,程序退出后内存也没有降低?
  • 请教高手,如何在java中调用其他应用程序(该程序主要进行数据库操作)
  • 请教一下在驱动里怎么调用应用程序
  • 请教一个古老的DOS程序——IMG的用法
  • 请教各位大大 怎样编写LINUX触摸屏的驱动程序?
  • 请教!关于linux字符驱动程序
  • 请教,在jcreator下面如何使程序单步执行?多谢!
  • 请教:用jbuilder7编写程序时,光标显示不正确,请问怎样解决?
  • 请教一下程序员考试的情况
  • 请教高手关于c程序core问题
  • 请教,在linux下如何判断程序的内存泄露?
  • 请教高手:如何用gnome/gtk编写托盘程序
  • 请教怎么在程序中转换用户?
  • 请教shell脚本启动程序
  • 请教,自编程序如何控制mplayer播放器
  • 请教cgi程序不能使用popen的问题
  • 请教多线程程序的内存占用问题
  • 请教高手一个简单问题:给定一个文件名,如何去查找该文件正在被几个程序使用,并怎么样才可以切断这个文件与正在打开该文件的程序之间的
  • 请教:使用mkswap /dev/hdaX 之后可使用任意数字来规定swap分区大小
  • 请教,如何使用JDOM操作XML文档?
  • 请教wget命令行的使用
  • 请教虚拟PC下LINUX使用问题~
  • IP地址数字互转 iis7站长之家
  • 请教ramdisk的使用方法
  • 如何在Linux上使用LoadLibrary()?高手请教!
  • 请教一个使用静态库的问题
  • tcpdump使用请教
  • 请教makefile的使用方法。
  • 请教问题库使用的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教关于linux开发驱动程序的方向
  • 请教如何安装内猫的驱动程序
  • sql server数据库有没有专门的jdbc驱动程序,若有,请教怎样获得?
  • 请教单片机驱动程序开发
  • 请教:修改Linux内核时,需要调用驱动程序的函数,头文件也包含了,但是编译时候说头文件找不到!
  • 请教:Linux驱动程序中的llseek函数
  • 请教:linux的驱动程序如何调用动态连接库?
  • 请教一个关于驱动测试程序的问题
  • 请教高手:如何把USB驱动程序从Linux2.4内核移植到2.6
  • 请教谁有在DOS下用程序驱动CD-ROM播放CD的资料,多谢了
  • 请教一句话:hash、表驱动、cache是程序设计中唯一伟大的三种技术。
  • 请教高手,有关字符设备驱动程序问题
  • 请教nvidia GeForce2 64M的显卡驱动程序在redhat linux上怎样安装
  • 高分请教,驱动程序中的几个概念问题
  • 关于驱动程序的编译.初学,请教几个问题!
  • 我用的是atmel一个成熟的开发板。有一个触摸屏驱动程序,以<M>的方式编译为模块,编译时提示某个外部函数没有定义,但如果以<*>的方式编译进内核,则不会出错。请教下可能是什么原因?
  • 请教结构体定义--LINUX驱动程序中语句
  • 请教驱动程序交叉编译问题(初学)
  • 编写ARM上Linux驱动程序出错,请教高手要写些什么结构
  • 还是不懂,驱动到底如何能同步的发送信号给用户程序,请教高人,谢谢了
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3