Re: [systemd-devel] sd_event_add_io with EPOLLPRI option

2017-08-29 Thread Lennart Poettering
On Do, 24.08.17 10:24, Yong Li (sdliy...@gmail.com) wrote:

> I found the root cause: I did not read the data in my callback function!
> Note that an event source set to SD_EVENT_ON will fire continuously
> unless data is read from or written to the file descriptor to reset
> the mask of events seen.

BTW, you can use SD_EVENT_ONESHOT for events that shall be fired only
once, and are disabled automatically for the next iteration when its
callback is invoked.

Lennart

-- 
Lennart Poettering, Red Hat
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel


Re: [systemd-devel] sd_event_add_io with EPOLLPRI option

2017-08-24 Thread Yong Li
I found the root cause: I did not read the data in my callback function!
Note that an event source set to SD_EVENT_ON will fire continuously
unless data is read from or written to the file descriptor to reset
the mask of events seen.

2017-08-23 17:21 GMT-07:00 Yong Li :
> Hi all,
>
> I want to use the sd_event_add_io API to monitor a GPIO pin status
> change. This pin supports intrrupts(echo both > edge). And it works
> using the epoll code at https://gist.github.com/jadonk/2587524: The
> callback function will be called if there is data change on the pin.
>
> However, the sd_event_add_io does not work: the callback will always
> be triggered(without pin status change). I am using this example:
> http://0pointer.net/blog/introducing-sd-event.html. Just replace the
> fd = open("/sys/class/gpio/gpio34/value", O_RDWR | O_NONBLOCK); and
> replace EPOLLIN using EPOLLPRI.
>
> Any suggestions/comments?
>
>
> Thanks,
> Yong
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel


[systemd-devel] sd_event_add_io with EPOLLPRI option

2017-08-23 Thread Yong Li
Hi all,

I want to use the sd_event_add_io API to monitor a GPIO pin status
change. This pin supports intrrupts(echo both > edge). And it works
using the epoll code at https://gist.github.com/jadonk/2587524: The
callback function will be called if there is data change on the pin.

However, the sd_event_add_io does not work: the callback will always
be triggered(without pin status change). I am using this example:
http://0pointer.net/blog/introducing-sd-event.html. Just replace the
fd = open("/sys/class/gpio/gpio34/value", O_RDWR | O_NONBLOCK); and
replace EPOLLIN using EPOLLPRI.

Any suggestions/comments?


Thanks,
Yong
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel