From: Richard W. <ri...@no...> - 2015-12-11 18:38:20
|
Am 11.12.2015 um 12:24 schrieb Anton Ivanov: > On 11/12/15 08:16, Richard Weinberger wrote: >> Am 11.12.2015 um 07:58 schrieb Anton Ivanov: >>>>> 2. I cannot catch what is wrong with the current code in signal.c. When >>>>> I read it, it should not produce re-entrancy. But it does. >>>> Sorry for the delay. Until now I did not find the time to dig into that. >>>> Did you find the offending code in signal.c? >>> Yes. >>> >>> Unblock signals is logically incorrect - it will re-trigger an >>> interrupts even if there is an interrupt in flight whose processing has >>> not been finished. >>> >>> I tried several approaches both with the original poll() controller and >>> with my epoll() based version, some show promise. >>> >>> I had to put it aside until next Friday as I have some stuff due at work >>> so I cannot spare time to work on it until then. Once I get that out of >>> the way I should be able to spare it a day or two which should be enough >>> to finish it. >>> >>> Ditto for the UBD improvements. >> One thing we have to consider is that's legit to have SIGIO nested. > > Correct. That is considered :) > > Both when looking at poll() and epoll() > > However, it is not legit to have sigio on a specific fd nested. That is mostly safe for the poll() version, but will need to be accounted for in any surgery on the irq controller. So, the current code is fine unless you switch to epoll()? Is it because you use epoll() in edge-triggered mode? Thanks, //richard |