Как я могу программно установить разрешения на моем устройстве char

Я недавно унаследовал некоторый код на работе, это старые драйверы ядра 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);
}
7
задан Mike 7 August 2012 в 13:31
поделиться