Не удалось открыть узел устройства из пользовательского пространства в 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

Я также попытался установить разрешение для системы system. Это все еще не работает.

Когда я запускаю 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 не сможет получить доступ к узлу устройства, поскольку разрешение установлено для узла устройства.


person Rahul Khandelwal    schedule 19.05.2016    source источник
comment
Совет: правильное использование strerror заключается в передаче ему немодифицированного (не инвертированного) значения errno: sterror(errno). Что касается проблем с доступом, возможно, что устройство само блокирует все обращения к нему со стороны пользователя без каких-либо возможностей.   -  person Tsyvarev    schedule 19.05.2016
comment
Каковы разрешения для /dev/dri (т. е. для каталога)?   -  person sawdust    schedule 20.05.2016


Ответы (1)


Решено. Я забыл поместить запись для узлов устройства в /external/sepolicy.

/dev/dri(/.*)?         u:object_r:graphics_device:s0

Более подробная информация о sepolicy приведена на веб-сайте Android. https://source.android.com/security/selinux/implement.html .

person Rahul Khandelwal    schedule 20.05.2016