我怎么知道Linux模块初始化的未成年人

鲍勃5421

我正在写一个Linux内核模块。

这是我在模块的init函数中所做的事情:

register_chrdev(300 /* major */, "mydev", &fops);

它工作正常。但是我需要知道小数。

我读过,我们无法设置这个次要号码。是内核给了我们这个数字。如果是这样,我如何在模块的init函数中知道它?

谢谢

生而自由

register_chrdev__register_chrdev内部通话

static inline int register_chrdev(unsigned int major, const char *name,
                  const struct file_operations *fops)
{
    return __register_chrdev(major, 0, 256, name, fops);
}

如果您看到__register_chrdev功能签名,则为

int __register_chrdev(unsigned int major, unsigned int baseminor,
              unsigned int count, const char *name,
              const struct file_operations *fops)

register_chrdev将通过您的主电话号码(300)和基本次电话号码0,计数为256因此,它将为您的设备保留0-255个次要数字范围。

另外,在的定义中__register_chrdevdev_t将为您的设备创建结构(包含主要和次要编号)。

err = cdev_add(cdev, MKDEV(cd->major, baseminor), count);

MKDEV(cd->major, baseminor)创建它。因此,第一个设备号(dev_t)将0作为其次要号。此外,count(256)是可以进一步使用的连续次要数字。

如果使用,您还可以动态获取主要和次要号码alloc_chrdev_region您所要做的就是将一个dev_t结构传递alloc_chrdev_region它将为您的设备动态分配主要和次要编号。要获取模块中的主号和副号,您可以使用

major = MAJOR(dev);
minor = MINOR(dev);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何更改未成年人的数量?

iBeacon约束可以接受多个专业/未成年人

chol.default(Cxx)中的错误:顺序的前导未成年人不是肯定的

SQL-未成年人之前存在主要帐户

我正在尝试在python中创建一个程序,以接受用户提供的输入并告诉他们是否未成年人

在chol.default(K)中出现错误:5级前导未成年人不是使用betareg的正定

coda gelman.diag():“ chol.default(W)中的错误:nn顺序的前导未成年人不是肯定的”

ARKit我怎么知道根节点已经初始化

我怎么知道自动映射器是否已经初始化?

40岁左右的成年人应该和我一样学习Alice的编程吗?

当我使用“服务”模块时,如何知道Ansible运行哪个初始化系统?

为什么未成年GC持续时间的变化这么大,当大数组的元素被更新?

Linux:我怎么知道导出设备节点的模块?

未成功初始化的 SSH kubernetes pod

记录器模块想知道初始化它的模块的路径

我可以“取消初始化” git子模块吗?

我怎么知道Rust中是否初始化了某些东西?

Rails初始化器-怎么了

Ruby类初始化重写模块初始化

我的USB HSM已初始化,现在我不知道如何使用它

可以在模块初始化完成之前删除linux内核模块吗?

我应该怎么做才能初始化结构数组

我如何为我的人结构初始化字符串

如果我们知道加密数据和密钥,是否可以找出初始化向量

初始化变量。我不知道他们的类型[java]

错误数组用作初始化程序,我不知道错误

在需要时初始化模块

云初始化模块重启过程

mcrypt长时间初始化模块