gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:48 48 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 中创建一个设备并将其与驱动程序的主要和次要相关联。但是,即使以 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/46788295/

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