> Firstly note that you cannot lose edge events. They are queued in the > kernel in case userspace is a bit busy. It is still possible to overflow > the queue, but it takes serious effort. You can check the seqnos in the > events to detect an overflow. I think the only thing that is lost is my memory sometimes. > It is also a bit odd to be monitoring a line for edges AND polling it > at the same time. You get edge events when it changes value, so polling > between edges is redundant. Yeah, I might have to rethink my usage there... > Though if you are using a libgpiod function to perform the wait you are > still stuck, as going by the documentation you have to prevent other > access while you are waiting.... > So you have to not use a libgpiod function and wait by poll()ing the > request fd. > At that point you may as well wait on both requests in the one thread. > And then you don't need the mutex as you only have one thread accessing the > requests. I see. So that means waiting on the request fd is not affected by the threading contract? Thanks for your help. Mathias