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

驱动程序(模块)怎样与应用层交互呀?也就是应用程序怎样控制驱动程序?让其做什么它就做什么。

    来源: 互联网  发布时间:2016-10-09

    本文导语:  rt | 在linux系统中,内核和用户空间的接口一般有如下几个:/proc和/sys文件系统以及/dev/目录下的设备文件。三楼的说没错,对/dev目录下设备文件的访问,例如open、read、write等函数,最终会调用...

rt

|
在linux系统中,内核和用户空间的接口一般有如下几个:/proc和/sys文件系统以及/dev/目录下的设备文件。三楼的说没错,对/dev目录下设备文件的访问,例如open、read、write等函数,最终会调用到设备驱动中注册的file_operations结构体中对应的open、read、write等函数。
下面举个简单的例子说明一下,在linux下,如果你的系统有光驱的话,执行编译后的程序可弹出光驱。

/*
 * Copyright(c) 2009, MaxWit Software (ShangHai) Co., Ltd.
 * All rights reserved.
 */


#include 
#include 
#include 
#include 
#include 


int main(void)
{
    int fd, ret;
    
    //if your system have the cdrom
    fd = open("/dev/cdrom", O_RDONLY | O_NONBLOCK);
    if (-1 == fd)
    {
        perror("Unable to open device");

        return 1;
    }

    ret = ioctl(fd, CDROMEJECT);
    if (-1 == ret)
    {
        perror("Unable to control device");
        close(fd);

        return 1;
    }
 
    close(fd);

    return 0;      
}

|
实现一个模块,模块内实现一个file_operations结构体,然后注册一个字符设备,然后创建相应的设备节点,然后应用程序open这个设备节点,然后就可以进行操作了(比如ioctl)

建议参考《Linux设备驱动程序(第三版)》

|
可以参考下面集中方法。
1. 作为普通设备,注册相关的file operation,如楼上。
2. 通过proc文件系统
3. 通过sequence文件接口

|
系统调用。可以是文件操作层面上的,比如read,write,open等,也可以通过ioctl来实现。

|
学习了。原来内核和用户通信的方法这么的多。LDD3 好去看它。 

|
有统一的对外接口open write read ioctl 啥啥的

|
驱动模块可以通过系统调用,设备节点,信号,netlink, socket与用户通讯。 
方式还是蛮多的!

    
 
 

您可能感兴趣的文章:

  • 关于Linux 2.6平台下,自定义的USB HID设备是系统提供驱动程序还是需要自己完成驱动程序?
  • 谁有LINUX设备驱动程序第三版的程序代码,发我一份,非常的感谢!
  • 请问如何设置驱动程序和应用程序的启动顺序和优先级呢?
  • 请问shell 开发能开发什么样的程序?硬件的驱动程序是否能够开发呢?
  • 用户程序的ioctl是怎么和驱动程序中的ioctl实现联系
  • 驱动程序找不到Class.forName("oracle.jdbc.driver.OracleDriver");,在程序中还要设置什么?
  • linux驱动程序是怎样通过内核和应用程序通信,还有是怎样和硬件通信,跪求求解,谢谢高手留言。
  • 菜鸟请教,应用程序如何判断驱动程序已经挂载成功
  • 在哪里可以下载OREILLY的linux设备驱动程序一书的程序源代码?在线送分!
  • 有触摸屏驱动程序源代码,怎么写一个命令行的程序测试驱动程序?
  • 怎样才能得到Redhat8.0支持的所有打印机的驱动程序列表文件,我程序里要用。先谢过
  • linux初学者一简单问题!在线送分!linux设备驱动程序一书的第一个程序.
  • 开发网卡驱动程序一般用什么现成的程序或者工具来测试(调试)
  • 请教下,应用程序使用通过驱动程序使用设备的过程
  • 问下arm下如何实现memory模式的cf的驱动,程序框架怎么搭!有源程序参考下更好!分数不多全部送上,谢谢了!
  • 请问,如何装载mssql的jdbc的驱动程序和设置java执行程序时的参数。
  • linux驱动程序中怎么做api函数供应用程序调用
  • 谁会在DOS下面安装网卡驱动程序?
  • java通过jdbc访问数据库流行采用何种数据库驱动程序?jdbc-odbc , InterClient , 还是“网络协议/全java驱动程序”?如有可能,请给简明
  • 编译程序时出现[Message][ODBC 驱动程序 管理器]非法的描述器索引。是什么问题??
  • 我的网卡在redhat7.3下不能自动驱动,但我有for linux的驱动程序,请问如何才能驱动我的网卡,我是菜菜,请详细说明,谢谢!
  • 有两个USB键盘怎么用自己写的USB键盘驱动程序只替换其中一个驱动?
  • -------------- 请问大家,做好一个PCI设备驱动了,如何做个应用程序来使用这个驱动呢??
  • 请问, linux 驱动中, IO 口变化了,驱动如何通知应用程序?
  • 各位老大,你们是从哪些方面改进网卡驱动程序的效率,欧现在写了一个lan91c嵌入式网卡的驱动,需要帮助
  • USB的ADSL驱动程序!!(可以驱动电信的ADSL)
  • 各位高人,关于IDE的驱动程序,我看蒙了,谁能告诉我到底linux源文件中到底那些是跟IDE硬盘驱动有关的?
  • 两个驱动程序能互相访问么?
  • 驱动程序是否需要修改呢?帮顶有分
  • Norflash是否一定要驱动程序
  • 请问UNIX系统下装上WINDOWS的打印机驱动程序,可否打印?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 谁知道哪里有usb驱动程序的详细介绍,我想学习。
  • 有没有这样的驱动程序?
  • linux和unix iis7站长之家
  • android内核中怎样hook一个驱动程序??
  • 有关于驱动程序的问题。一定给分的。
  • linux和windows的驱动程序是一样的吗??
  • 请问哪里有声卡的驱动程序下载?
  • 移植PCI驱动程序,提示找不到iobuf.h
  • 在Linux下作设备驱动程序应如何入手
  • 烦恼:看不懂“Linux设备驱动程序(第二版)”!
  • 动态加载网络驱动程序问题
  • 如何把我的硬件设备和我的驱动程序连接起来
  • Intel显卡的Linux驱动程序
  • Linux下的NTFS驱动程序 NTFS-3G
  • 通过JdbcOdbcDriver连接Access出现“未发现数据源名称并且未指定默认驱动程序”
  • 哪儿可以下载到连接Interbase 的JDBC驱动程序?
  • 驱动程序的问题,急!!!(在线等!!!)
  • 如何获得MYSQL驱动程序接口?
  • 请教各位大大 怎样编写LINUX触摸屏的驱动程序?
  • 关于驱动程序的问题


  • 站内导航:


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

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

    浙ICP备11055608号-3