Невозможно открыть узел устройства из пространства пользователя в Android
В Android возникают проблемы с открытием узла устройства (dev/dri/card0) от hwcomposer, работающего в пространстве пользователя. Я пытаюсь открыть устройство, как:
fd_ = open("/dev/dri/card0", O_RDWR);
if (fd_ < 0) {
ALOGE("Failed to open dri- %s", strerror(-errno));
return -ENODEV;
}
Ошибка:
hwc-drm-resources: Failed to open dri- Unknown error -13
Ошибка 13 - проблемы с правами доступа. Для этого я настроил разрешение в ueventd.rc в Android:
/dev/dri/* 0666 root graphics
Я также попытался установить разрешение для системы. Это все еще не работает.
Когда я запускаю ls -la в /dev/dri. Это показывает следующий вывод, у него есть разрешение rw для пользовательского режима.
crw-rw-rw- root graphics 226, 0 2015-01-01 00:26 card0
crw-rw-rw- root graphics 226, 64 2015-01-01 00:26 controlD64
Я не понимаю, почему hwcomposer не сможет получить доступ к узлу устройства, так как разрешение установлено для узла устройства.
1 ответ
Решено. Я забыл поместить запись для узлов устройства в /external/sepolicy.
/dev/dri(/.*)? u:object_r:graphics_device:s0
Более подробная информация о sepolicy приведена на сайте Android. https://source.android.com/security/selinux/implement.html.