2014-02-13 2 views
1

Возможно ли создать символьное устройство в модуле ядра Linux, который начинается с модуля 666? Сейчас это всегда 600 (принадлежит root), и я должен chmod его. Я мог бы создать записи udev для его решения, но я действительно предпочитал, чтобы модуль делал это автоматически.Разрешения для персонального модуля модуля ядра Linux

Возможно ли это? Я не могу найти какую-либо информацию в документации cdev_init или cdev_add.

ответ

7

Вы можете сделать это, установив метод 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, 
    [...] 
}; 
+0

Это именно то, что я искал, спасибо! :) Любой совет, где я могу найти такие вещи в будущем? – Yeraze

+0

Вещи о ядре? Linux Device Driver 3rd edition, каталог документации в исходном коде ядра и лучший источник информации: сам источник ядра Linux;) – Federico

+0

Это не работает с Linux версии 3.19.8. 'file_operations' не имеет' dev_uevent'. – Melab

Смежные вопросы