【问题标题】:Opening a device file from a Linux device driver从 Linux 设备驱动程序打开设备文件
【发布时间】:2014-05-27 01:16:44
【问题描述】:

我有一个需要操作另一个设备驱动程序的 Linux 设备驱动程序。具体来说,我需要不时打开设备文件并调用ioctl

我已经阅读了有关sys_opensys_ioctl 等的信息,但我不确定这是否是正确的选择。有没有更好的方法来做我想做的事?

如果我继续使用sys_opensys_ioctl等,如何确保我需要打开的设备的驱动程序在我自己的设备驱动程序之前初始化?

【问题讨论】:

    标签: linux linux-kernel linux-device-driver


    【解决方案1】:

    open + ioctl 已经足够好了。您可以使用 sysfs 或 procfs 两者都是简单的界面但功能强大

    如果您不想从用户空间程序加载,请使用“request_module”从您的模块加载模块,如下所述,以确保模块加载。

    int your_module_init (void)
    {
            request_module("<module_name>");
    
            return 0;
    }
    

    或者在 modprobe 的情况下,在模块之间创建相互依赖关系,这样驱动程序模块将首先加载。

    【讨论】:

    • request_module 也可以用于编译到内核中的驱动程序吗?或仅用于模块(顾名思义)
    • request_module 在内部使用 /sbin/modprobe 来加载模块。您只需要更新 modules.dep 即可。结帐 proc 条目 /proc/sys/kernel/modprobe
    猜你喜欢
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 2012-05-26
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多