gpt4 book ai didi

linux-kernel - 如何在加载设备驱动程序的内核模块时自动在/dev中创 build 备?

转载 作者:行者123 更新时间:2023-12-03 03:32:27 32 4
gpt4 key购买 nike

我正在尝试开发 Linux 设备驱动程序,作为我的第一次尝试,我正在尝试开发具有以下文件选项的字符设备驱动程序,

struct file_operations fops{  
.open=open_fun,
.release=release_fun,
.write=write_fun,
.read=read_fun,
};

当我使用 insmod 加载驱动程序时,我看到 /proc/devices 在 char devices 下列出了驱动程序,但我在 /中找不到它开发。 Google 搜索建议使用 mknod/dev 中创 build 备并将其与驱动程序的主要和次要相关联。但是,即使以 super 用户身份尝试这样做也会导致“权限被拒绝”错误。

如何才能在加载内核模块时使设备出现在 /dev 中?我尝试了注册设备的旧版本(register_chrdev)和新版本(cdev_init & cdev_add),但它们都不起作用。

最佳答案

  • 包含头文件linux/device.hlinux/kdev_t.h

  • 静态结构类c_dev;

  • 静态结构体 dev_t dev;

在驱动程序的 __init 函数内部添加以下 API

  • cl = class_create(THIS_MODULE,"x");

其中 x - 加载驱动程序时在/sys/class/中显示的名称。

  • 使用 device_create () 内核 API 和 device_create(cl, NULL, dev, NULL, "d");

其中 d - 要在/dev 下创建的设备文件。

其中 dev 是在使用 alloc_chrdev_region API 为驱动程序动态分配主设备号期间初始化的第一个设备号的变量

如需进一步引用,请访问链接http://opensourceforu.com/2011/04/character-device-files-creation-operations/

关于linux-kernel - 如何在加载设备驱动程序的内核模块时自动在/dev中创 build 备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8697300/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com