Ich möchte auf I2C-Gerätetreiberknoten aus Benutzerbereich in einem Linux-Kernel 3.10.14 zugreifen. Ich habe i2c-dev in die Kernel-Konfiguration aufgenommen und die/dev/i2c- * Geräteknoten bekommen. Allerdings Erlaubnis haben sieEinstellung der Geräteberechtigung von Treibercode schlägt fehl
$ ls -l /dev/i2c-*
crw------- root root 89, 1 2014-08-21 20:00 i2c-1
In drivers/i2c/i2c-dev.c ich den Rückruf
hinzugefügtstatic char *i2c_dev_devnode(struct device *dev, umode_t *mode)
{
if (!mode)
return NULL;
if (MAJOR(dev->devt) == I2C_MAJOR)
*mode = 0666;
return NULL;
}
und in der gleichen Datei habe ich den Rückruf an die Geräteklasse Struktur:
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;
...
}
jedoch die Zugriffsrechte des Geräteknotens
bleibencrw------- root root 89, 1 2014-08-21 20:00 i2c-1
Es gibt keine /lib/udev/rules.d oder /etc/udev/rules.d
Ich würde mich über Vorschläge freuen, was hier schief gehen könnte.
Ich bin auch an Ideen interessiert, wie man dieses Problem prüft.
Dies hat die Berechtigungen der Gerätedatei nicht geändert. In – keepitintheground
Treiber/I 2 C/I 2 C-dev.c Ich fand auch das Helfermakro DEVICE_ATTR für Geräte definieren Attribute: Es wird verwendet als: statische DEVICE_ATTR (foo, S_IRUGO, show_foo, store_foo); so sollte die Berechtigungen von/dev/i2c- sein cr - r - r-- aber nicht. – keepitintheground
Ich habe das für Sie getestet. Das funktioniert perfekt. Putting unter Patch & Test Res. – rk1825