int device_ioctl(fd,argv) {
/* your function*/
}
static struct file_operations device = {
.ioctl = device_ioctl //预留外部接口
}
应用程序如下:
ioctl(device,argv);
上面这句就可以完成你的模块中ioctl中的功能。
驱动程序工作在内核空间
,由内核来调用
比如某硬件的驱动程序中实现了hd_write()函数,则用户在
用户空间
打开这硬件的设备文件并调用
系统调用
函数write()时,内核就调用hd_write()函数。
对呀!就静态加载和动态加载,静态加载是系统启动的时候由内核自动加载的,这个要事先将驱动编译进内核才行,还有一种就是动态加载,也就是模块加载方式,这种方式下驱动以模块的形式存放在文件系统中,需要时动态载入内核,这种主要用在调试的时候,比较方便灵活。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)