【发布时间】:2017-12-09 00:00:35
【问题描述】:
我想从 linux 内核 3.10.14 中的用户空间访问 I2C 设备驱动程序节点。 我在内核配置中添加了 i2c-dev 并获得了 /dev/i2c-* 设备节点。但是他们有权限
$ ls -l /dev/i2c-*
crw------- root root 89, 1 2014-08-21 20:00 i2c-1
在 drivers/i2c/i2c-dev.c 我添加了回调
static char *i2c_dev_devnode(struct device *dev, umode_t *mode)
{
if (!mode)
return NULL;
if (MAJOR(dev->devt) == I2C_MAJOR)
*mode = 0666;
return NULL;
}
在同一个文件中,我将回调添加到设备类结构中:
static int __init i2c_dev_init(void)
{
...
i2c_dev_class = class_create(THIS_MODULE, "i2c-dev");
...
/* set access rights */
i2c_dev_class->devnode = i2c_dev_devnode;
...
}
但是设备节点的访问权限仍然存在
crw------- root root 89, 1 2014-08-21 20:00 i2c-1
没有 /lib/udev/rules.d 或 /etc/udev/rules.d
如果有任何可能出现问题的建议,我将不胜感激。
我也对如何测试这个问题的想法感兴趣。
【问题讨论】: