Linux应用程序如何调用驱动程序

Linux应用程序如何调用驱动程序,第1张

一般的驱动程序是不允许应用程序调用的,只有当驱动程序留出这种供外界访问的接口才行,这种接口一般包括read,write,open,ioctl等接口,如果驱动中预留出了这些接口,就可以在应用程序中调用,比如fd=open(设备,参数)或者fd=ioctl(设备,参数),这样就会调用到这个设备驱动中的open或者ioctl函数。所以一般如果想再应用程序中调试某个驱动程序,常见的方法就是自己建立一个驱动模块,这个模块中预留出对外接口,比如ioctl。然后在你新建的这个驱动模块中完成ioctl函数,如下:

int device_ioctl(fd,argv) {

/* your function*/

}

static struct file_operations device = {

.ioctl = device_ioctl //预留外部接口

}

应用程序如下:

ioctl(device,argv);

上面这句就可以完成你的模块中ioctl中的功能。

驱动程序工作在

内核空间

,由内核来调用

比如某硬件的驱动程序中实现了hd_write()函数,则用户在

用户空间

打开这硬件的设备文件并调用

系统调用

函数write()时,内核就调用hd_write()函数。

对呀!就静态加载和动态加载,静态加载是系统启动的时候由内核自动加载的,这个要事先将驱动编译进内核才行,还有一种就是动态加载,也就是模块加载方式,这种方式下驱动以模块的形式存放在文件系统中,需要时动态载入内核,这种主要用在调试的时候,比较方便灵活。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8994501.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存