Итак, я получаю доступ к чипу GPIO в Linux, используя / dev / gpiochipX и ioctls в Linux 4.14.Я хотел бы получить событие из булавки, а затем очень быстро затем прочитать значение булавки.
Сейчас я могу получить событие, зарегистрировав запрос строки для событий и перехватив событие с помощьюопрашивая его, с помощью poll (2) через что-то вроде этого:
returnValue = ioctl(fileDescriptor, GPIO_GET_LINEEVENT_IOCTL, &requestEvent);
Я бы хотел, чтобы запрос строки для значений для того же вывода был готов в фоновом режиме, чтобы я мог проверитьсостояние булавки как можно быстрее после получения события.
Однако, когда я пытаюсь зарегистрировать запрос строки для значений для одного и того же вывода с помощью чего-то вроде этого:
returnValue = ioctl(fileDescriptor, GPIO_GET_LINEHANDLE_IOCTL, &requestValue);
, Linux возвращает ошибку «Устройство или ресурс заняты».
Насколько я вижу, я должен освободить запрос строки GPIO для события, зарегистрировать запрос новой строки для значения, а затем проверить значение.
Итак, я что-то упустил или действительно невозможно получить запрос строки для событий и для значения, активного одновременно?