[Xenomai] EINTR in notifier.c (mercury)
Matthias Schneider
ma30002000 at yahoo.de
Sun Apr 6 13:11:42 CEST 2014
> On Monday, March 31, 2014 7:50 PM, Gilles Chanteperdrix <gilles.chanteperdrix at xenomai.org> wrote:
> > On 03/31/2014 03:18 PM, Philippe Gerum wrote:
>> On 03/31/2014 01:27 PM, Gilles Chanteperdrix wrote:
>>> On 03/31/2014 12:34 PM, Matthias Schneider wrote:
>>>> Hi all,
>>>>
>>>>
>>>> still working on thread suspension in mercury, I noticed that some
>>>> threadobj_suspend() and threadobj_resume() calls seemed not to have the desired
>>>> effect. Analyzing the issue, I found out that sometimes the read operations on
>>>> the pipe in notifier_wait() seem to return with EINTR, especially in
>>>> heavily loaded systems. Restarting the read system call in that case made
>>>> thread suspension a lot more reliable in my case.
>>>>
>>>> I have attached a patch adding loops to deal with the EINTR situation in all
>>>
>>> You can probably avoid testing for EINTR if all signal handlers are
>>> registered with the SA_RESTART flag.
>>>
>>
>> The app may not explicitly care for signals (granted, most would do, but
>> we would then have to assume they do it right).
>>
>
> Yes, applications may want to use signals to interrupt a call to read
> and voluntarily get EINTR anyway.
> Gilles.
Please find attached a third version of my patch dealing with
EINTR syscalls. Note that I also stumbled over unexpected behavior
in threadobj_sleep and cancel_sync due to EINTRs. Considering that
mercury is using signals for user-space round-robin and thread
suspension, even without any application signals EINTR happens
quite often.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: eintr_3.patch
Type: text/x-patch
Size: 3040 bytes
Desc: not available
URL: <http://www.xenomai.org/pipermail/xenomai/attachments/20140406/c4a1fe20/attachment.bin>
More information about the Xenomai
mailing list