能在一个内核模块中调用驱动程序中的设备操作函数吗?
我想实现一个内核模块,它可以通过调用驱动程序中的设备操作函数(比如open, write read等))来控制该设备,
比如open的原型是
int open(struct inode* node, struct file *filp);
我现在的问题是,能不能在我写的内核模块里面确定open的这些参数-node和filp,从而达到调用的目的呢?谢谢
====
在水木上问了,也没人回答;
后来问了一个同学,他说可以通过主次设备号来获得其对应设备相应的驱动程序信息。
可是具体的细节没有说,我到网上搜了一下,没有找到相关的信息。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我试试吧,
我查了一下,如果一定要这么做的话,也是可以的,但我还是觉得别扭:)
这个是基于2.6的
比如字符设备驱动在注册后,都会放到一个数组里,这个数组定义在fs/char_dev.c中,如下:
static struct char_device_struct {
struct char_device_struct *next;
unsigned int major;
unsigned int baseminor;
int minorct;
const char *name;
struct file_operations *fops;
struct cdev *cdev; /* will die */
} *chrdevs[MAX_PROBE_HASH];
实际上你可以直接访问这个数组,获取相应的驱动程序信息和操作函数,但是可能得作些修改(比如说,这个数组是static)。