iopl () периодически прерывается - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю на аппаратном устройстве, где мне нужно выполнить некоторые операции GPIO. В начале моей программы я вызываю iopl(3). Исполняемый файл не принадлежит root, но имеет установленные возможности - cap_sys_rawio+eip. Хотя это работает в большинстве случаев иногда процесс завершается неудачно с:

iopl: Operation not permitted

Способность недостаточна? Я не могу запустить программу как root. Устройство работает Ubuntu 14.04.2. dmesg / syslogs не дают любые намеки!

Подробнее:

Начало моего main имеет это:

if (iopl(3) != 0) {
    perror("iopl");
    assert(!"Failed to set privilege!");
}

Хотя это работает в большинстве случаев, иногда на аппаратной платформе (На базе Intel Atom), это не получается при perror печати iopl: Operation not permitted.

1 Ответ

0 голосов
/ 26 ноября 2018

Зная, что вы не можете запустить программу от имени пользователя root, я думаю, если вы попытались:

 chmod u+s /usr/bin/xinit

или если у вас есть права root,

sudo chmod u+s /usr/bin/xinit

Если нет setuidбыл установлен (учитывая запуск без sudo - так как у вас уже есть root-доступ)

sudo chown root $prefix/Xorg

sudo chmod u+s $prefix/Xorg

...