我用alloc_chrdev_region分配5个设备编号,为什么只能看到一个

发布于 2022-09-24 02:06:02 字数 4388 浏览 20 评论 0

在/proc/devices中只能看见一个,请问是什么原因

#include <linux/module.h>
#include <linux/types.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/cdev.h>
#include <linux/kdev_t.h>
#include <linux/string.h>

#define DEVICE_NAME     "chardev"
#define DEVICE_NUM      5

static dev_t devno;

static int __init test_init(void)
{
        int ret;

        ret = alloc_chrdev_region(&devno, 0, DEVICE_NUM, DEVICE_NAME);
        if (ret < 0)
                goto err;
err:
        return ret;
}

static void __exit test_exit(void)
{
        unregister_chrdev_region(devno, 5);
}

MODULE_LICENSE("GPL");

module_init(test_init);
module_exit(test_exit);

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

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

发布评论

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

评论(1

云归处 2022-10-01 02:06:02

你的alloc_chrdev_region(&devno, 0, DEVICE_NUM, DEVICE_NAME);生成的一个主设备号下的5个次设备号,相当与有5个同类设备共享一个主设备号,而自己都有各自的次设备号,而/proc/devices里面只显示主设备号!

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