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

驱动原理问题,大家指教,初学。

    来源: 互联网  发布时间:2016-04-11

    本文导语:  我们写的驱动是作为一个进程在执行?具体我们的驱动是以什么方式运行的?如何产生的,因为我们写的驱动中没有main函数,怎么去运行? 本人初学,大家指教。谢谢 | 驱动其实只是一堆...

我们写的驱动是作为一个进程在执行?具体我们的驱动是以什么方式运行的?如何产生的,因为我们写的驱动中没有main函数,怎么去运行?




本人初学,大家指教。谢谢

|
驱动其实只是一堆函数而已,用户进程使用设备时,通过系统调用进入内核空间,然后找到对应的驱动函数,完成对应的操作。

|
代码是一个静态的,而进程是一个动态的!

假设你的驱动叫A,分别了写a_open, a_read, a_write a_close这些函数,并把它以模块的方式加进内核中,此时,它是内核中的一部分,这里中是静态的特性


假设置有一个应用程序如下
main()
{
  int fd = open("your_devie", O_RDWR); //1
   read(fd, buf, len);  //1
}

当这个程序运行中,执行语句1,那么它会进入内核(因为open是一个系统调用),内核会主调用驱动的open(a_open)函数,因为驱动向内核注册了这个函数,这样你写的a_open函数就是成了该进程的一部分了,接着是a_read函数。

可能与此同时,另一个进程写了该设备,那么它也会相应执行你的a_open函数,那么你的驱动代码又成了另一个进程的一部分…………

如果a_read被多个进程使用产生数据竞争时,请使用保护机制,因为你写的驱动不能保证有多少个用户同时使用,除非你限制不能同时有两个或以上的进程打开!

|
可以将init_module看作用户空间的main, 即程序入口
内核应该可以看着是一个大的进程,注册后,你的驱动就是这个进程的一部分,可以在驱动里使用kernel_thread()来创建内核线程


    
 
 

您可能感兴趣的文章:

  • 构建linux 驱动开发环境问题。初学,大家指教。谢谢了
  • 驱动中的简单问题,大家指教!!!!!!!!!!
  • 初学linux设备驱动,菜鸟级问题,请指教,感激不尽
  • 调用驱动的一个初学者问题,大家指教,谢谢了。!!!!!!!!!!
  • 请问重新编译LINUX内核是否能将没有用的外设的驱动程序删除并减少内核占有内存的资源?请好心人仕指教!
  • i2c 驱动的问题,高人指教。
  • 音频设备驱动使用出错!请高手指教!
  • 驱动程序框架问题,大家指教。
  • redhat 9.0 下驱动程序开发是否需要重新编译内核?求高手指教!
  • linux键盘及串口驱动问题,初学,大家指教。急,在线等。谢谢了
  • 驱动接口调用问题,大家指教,初学。
  • 高分跪请高手指教,无线网卡驱动的几个问题!
  • 刚学LINUX驱动编程,书上的第一个列子就调不过去,请高手指教
  • [高分求助]小弟在编第一个驱动程序时出现了若干辣手问题,请高手指教!
  • 想试着编写简单驱动玩,但是手头上没有什么好驱动的设备,大家支招 iis7站长之家
  • linux如何知道自己写的驱动被注册成/dev目录下的什么文件,初学,大家指教。
  • linux驱动模型问题,大家指教。!!!!!!!!!!!!!谢谢了!!!!!!!!!!!!
  • 初学者,修改驱动问题。
  • 初学Linux驱动问题(1)
  • 驱动初学者的疑问?
  • 初学者问题:怎样安装网卡的驱动程序
  • 我是java的初学者,请问在Jbuilder6 中如何安装oracle8.0.5的Jdbc数据库驱动?
  • 初学者关于linux驱动异步通知的小问题
  • linux初学者一简单问题!在线送分!linux设备驱动程序一书的第一个程序.
  • 读驱动程序的一些问题关于#if,#ifdef等(初学)
  • 初学Linux,问怎样在RedHatLinux9上访问C(fat)盘,还有怎样安装显卡驱动
  • 初学字符设备驱动遇到的问题
  • 关于驱动程序的编译.初学,请教几个问题!
  • 初学驱动,遇到一点问题
  • 求教:初学触摸屏驱动,请求IRQ_ADC和IRQ_TS中断的时候总是返回EBUSY?
  • 请教驱动程序交叉编译问题(初学)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 官方都只发布Windows驱动,无原理图,如何自已为它写Linux驱动?提供点手段思路
  • 利用文件系统过滤驱动实现 类似还原卡功能 的原理是什么?
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 字符设备驱动,混杂设备驱动,总线、设备、驱动模型、平台驱动
  • UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍
  • 好不容易下到sis900网卡for unix的驱动,但装上驱动后系统驱动时: SiS900 adapter initialization failure!
  • 我的网卡在redhat7.3下不能自动驱动,但我有for linux的驱动程序,请问如何才能驱动我的网卡,我是菜菜,请详细说明,谢谢!
  • Linux环境下,“PC机的驱动”与“嵌入式驱动”有什么区别?
  • linux:怎么在驱动中调用IIC驱动?
  • linux驱动 单片机驱动
  • linux下一个驱动怎么调用另一个驱动
  • u boot中怎样写flash驱动以及串口驱动
  • Linux环境下,如何一个驱动中调用另外一个驱动
  • 一个驱动文件,生成多个驱动模块??
  • -------------- 请问大家,做好一个PCI设备驱动了,如何做个应用程序来使用这个驱动呢??
  • pcie驱动和pci驱动
  • usb驱动中 hcd,pcd,device,gadget驱动有什么区别啊?
  • 移植pci驱动和RTL8139网卡驱动,只发生一次中断?
  • 想试着编写简单驱动玩,但是手头上没有什么好驱动的设备,大家支招
  • 请教有关linux驱动开发,按关机键关机时,驱动应作哪些结束工作?
  • Linux源代码中ata驱动为什么要调用pci驱动的代码
  • Linux设备驱动(第三版)- 字符设备驱动 - 例子
  • Linux 9.0+865G,只能上到640×480,Intel官方站点的最新驱动安装失败,那位有驱动?


  • 站内导航:


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

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

    浙ICP备11055608号-3