Перейти к содержанию
    

Вопрос по poll в Linux

Добрый день

Могли бы пояснить некоторые моменты касательно использования poll для случая GPIO в роли IRQ

Сейчас есть такой прототитп

1.  chip0_poll = open ("/dev/gpiochip0", O_RDONLY);

2.rq_poll.lineoffset = PD14;  //
  rq_poll.eventflags = GPIOEVENT_EVENT_RISING_EDGE;
  rq_poll.handleflags = GPIOHANDLE_REQUEST_INPUT;
  ret = ioctl (chip0_poll, GPIO_GET_LINEEVENT_IOCTL, rq_poll);

3.  pfd.fd =        rq_poll.fd;
     pfd.events = POLLIN | POLLPRI;

 //lseek( chip0_poll, 0, SEEK_SET);    /* consume any prior interrupt */  ??

4.ret = poll(&pfd, 1, time_out_ms);

 

5. if (pfd.revents & POLLPRI)

          rd = read(req.fd, &event, sizeof(event));  ??

 

close ( pfd.fd)  ??

close(rq_poll.fd)  ??

close (chip0_poll) ??

 

-Вопрос по черным строкам, как я понимаю надо прочитать файл после poll что бы исключить ошибочного повтора , какой  размер sizeof(event)  ??      Гдето 1 байт а гдето в примерах 10

   

-lseek    надо добавлять  , если да  то куда?

 

-close ( pfd.fd) close(rq_poll.fd)  close (chip0_poll)  это одно и тоже  и можно один оставить или они содержат разные значения?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/8/2024 at 3:54 PM, spirit_1 said:

Могли бы пояснить некоторые моменты касательно использования poll для случая GPIO в роли IRQ

в юзерспейс никогда не пользовался этим, но примеры быстро гуглятся

https://developerhelp.microchip.com/xwiki/bin/view/software-tools/linux/apps-gpio-irq/#HApplication

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/9/2024 at 3:26 PM, sasamy said:

в юзерспейс никогда не пользовался этим, но примеры быстро гуглятся

https://developerhelp.microchip.com/xwiki/bin/view/software-tools/linux/apps-gpio-irq/#HApplication

 

примеров очень много,  проблем а том что они разные , вобщем перлопатив все это, подключив кнопку и светодиод пришел к следедующему

Перед полингом надо обязательно делать рид, иначе на полинге не останавливается 

 и первый полинг всегда  пустой, т.е не зависимо от события при  первом вызове функции . В остальном все стндартно по  примерам

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...