能在一个内核模块中调用驱动程序中的设备操作函数吗?

发布于 2022-07-22 09:35:59 字数 520 浏览 6 评论 2

我想实现一个内核模块,它可以通过调用驱动程序中的设备操作函数(比如open, write read等))来控制该设备,
比如open的原型是

         int open(struct inode* node, struct file *filp);
          我现在的问题是,能不能在我写的内核模块里面确定open的这些参数-node和filp,从而达到调用的目的呢?谢谢

====
在水木上问了,也没人回答;

后来问了一个同学,他说可以通过主次设备号来获得其对应设备相应的驱动程序信息。
可是具体的细节没有说,我到网上搜了一下,没有找到相关的信息。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

并安 2022-07-27 19:53:07

我试试吧,

幸福不弃 2022-07-27 19:05:29

我查了一下,如果一定要这么做的话,也是可以的,但我还是觉得别扭:)
这个是基于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)。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文