On 2015-10-16 17:31, Philippe Gerum wrote:
> On 10/16/2015 05:28 PM, Jan Kiszka wrote:
>> On 2015-10-16 17:22, Philippe Gerum wrote:
>>> On 10/16/2015 04:56 PM, Jan Kiszka wrote:
>>>> On 2015-10-16 16:49, Jan Kiszka wrote:
>>>>> Hi,
>>>>>
>>>>> kill() is currently handled by libcobalt such that PIDs <= 0 are
>>>>> forwarded to Linux and PIDs > 0 are considered to target only Xenomai
>>>>> threads. But what if the user wants to address a regular Linux task from
>>>>> within a Xenomai application? Shouldn't we retry kill via the Linux path
>>>>> if Xenomai's syscall reports ESRCH?
>>>>>
>>>>
>>>> IOW:
>>>>
>>>> diff --git a/lib/cobalt/signal.c b/lib/cobalt/signal.c
>>>> index aac4059..7e03301 100644
>>>> --- a/lib/cobalt/signal.c
>>>> +++ b/lib/cobalt/signal.c
>>>> @@ -99,6 +99,10 @@ COBALT_IMPL(int, kill, (pid_t pid, int sig))
>>>>  
>>>>    ret = XENOMAI_SYSCALL2(sc_cobalt_kill, pid, sig);
>>>>    if (ret) {
>>>> +          /* Retry with regular kill is no RT target was found. */
>>>> +          if (ret == -ESRCH)
>>>> +                  return __STD(kill(pid, sig));
>>>> +
>>>>            errno = -ret;
>>>>            return -1;
>>>>    }
>>>>
>>>> Jan
>>>>
>>>
>>> This may break code that sends signal 0 to detect whether a rt thread
>>> exists (like copperplate does), which is the reason for the lack of
>>> forwarding IIRC. (ret == -ESRCH && sig) would be required to forward
>>> without breaking such assumption.
>>
>> That still breaks POSIX (what if the user wants to test for a non-rt
>> thread, like this is possible under regular Linux?). Can't copperplate
>> be changed to bypass the wrapper?
>>
> 
> Probably, yes.
> 

Looking at cluster_probe, I wonder if there is actually a problem.
Doesn't that code also run over mercury? Then kill(pid, 0) also targets
the whole system, not just a set of Xenomai applications. Or do we need
to ensure that the caller is not migrated to Linux needlessly under
cobalt? IOW: can that probing happen under RT constraints?

The same applies for me to the other users of the kill-based probing
pattern (copperplate/heapobj-pshared.c and copperplate/regd/fs-common.c).

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SES-DE
Corporate Competence Center Embedded Linux

_______________________________________________
Xenomai mailing list
Xenomai@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai

Reply via email to