В 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 не сможет получить доступ к узлу устройства, поскольку разрешение установлено для узла устройства.
strerror
заключается в передаче ему немодифицированного (не инвертированного) значенияerrno
:sterror(errno)
. Что касается проблем с доступом, возможно, что устройство само блокирует все обращения к нему со стороны пользователя без каких-либо возможностей. - person Tsyvarev   schedule 19.05.2016