Уже давно использую малину в качестве домашнего сервера. 4TB usb-disk + GPIO-кнопка+светодиод включения/выключения торрент-клиента (работает собственный демон, запускающий transmission-daemon). Хочется чего-то поумнее. Демон периодически опрашивает кнопку, на что тратит драгоценные ресурсы процессора. Есть ли способ ничего не делать в демоне, а лишь получить прерывание (событие), что кнопка изменила состояние (Hi/Low)? И да.... хотелось бы Си, но Python тоже люблю.
http://www.science.smith.edu/dftwik...rupt-Driven_Event-Counter_on_the_Raspberry_Pi Но главный цикл все равно будет крутиться, нужно его усыпить.
Спасибо. У меня демон на Си написан, как раз и хотелось от главного цикла избавиться за счет прерываний. С прерыванием в нем можно будет поставить sleep (1000000), чтобы процессор не нагружал. Без прерываний приходится кнопки раз 10 в секунду оправшивать.
Пользовался Banana Pi - клон Rasberry. Так вот, там есть функция (как и в малине) wiringPiISR которая реализует прерывания, но проблема в том, что эта функция реализует их программно и вешает проц гораздо сильнее, чем опрашивание пинов в цикле в отдельном потоке с небольшими задержками. Если в малине, как и в банане wiringPiISR тоже откушивает процессор, то проще написать опрос пинов самому исходя из задачи.