是否可以在linux内核模块中创建一个以mod 666开头的字符设备?现在它总是600(由root拥有),我必须chmod它。我可以创建udev条目来解决它,但我真的更喜欢模块自动完成它。
有可能吗?我在cdev_init或cdev_add文档中找不到任何关于此的信息。
答案 0 :(得分:8)
您可以通过在类结构中设置dev_uevent
方法来完成此操作。在此方法中,您必须设置DEVMODE
uevent变量。这是一个例子
static int my_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
{
add_uevent_var(env, "DEVMODE=%#o", 0440);
return 0;
}
static struct class my_class = {
.name = "myname",
.owner = THIS_MODULE,
.dev_uevent = my_dev_uevent,
[...]
};