Я недавно унаследовал некоторый код на работе, это старые драйверы ядра Linux 2.4.X, и мне было поручено заставить их работать с более новым ядром 2.6 или выше. Я использую OpenSUSE 12.1 с ядром 3.1.10.
Я обновил исходный код из регистра _chrdev (), чтобы использовать класс _create ()/device _create ()вызовы, и я вижу, что мои устройства правильно отображаются в /dev. Моя текущая проблема заключается в том, что разрешения для моего устройства установлены на r/w только для пользователя:
crw------- 1 root root 244, 0 Aug 7 07:57 gcanain
Я знаю, что могу "chmod" файл через командную строку, и/или я могу установить разрешения udev... но есть ли способ сделать это программно, чтобы когда я ввожу команду insmod, dev был смонтирован с правильным правила уже действуют?
Существуют ли какие-либо API-интерфейсы, которые я могу вызвать для этого, какие-либо параметры, которые мне не хватает в одном из этих API-интерфейсов создания?
Просто для уточнения,Одна из причин, по которой я не хочу использовать правила udev, заключается в том, что я заранее не знаю названия драйверов устройств. Драйверы устройств создаются в цикле, поэтому к именам добавляется цифра, nNumDevs может быть чем угодно:
for (i = 0; i < nNumDevs; i++) {
strcpy(Modname,GC_ANAIN_MODULE_NAME);
strcat(Modname,"%d");
device_create(c1, NULL, MKDEV(nMajor, GC_ANAIN_MINOR_VERSION+i), NULL, Modname, i);
}