Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> Gilles Chanteperdrix wrote:
>>> Hi,
>>>
>>> on some (all ?) platforms, we get a SIGILL when trying to emit the first 
>> I don't see this on x86, though.
>>
>>> Xenomai syscall, instead of the -ENOSYS return value. This patches 
>>> handles the SIGILL by printing an error message and exiting.
>>>
>>> Index: include/asm-generic/bits/bind.h
>>> ===================================================================
>>> --- include/asm-generic/bits/bind.h (revision 4175)
>>> +++ include/asm-generic/bits/bind.h (working copy)
>>> @@ -9,6 +9,7 @@
>>>  #include <signal.h>
>>>  #include <pthread.h>
>>>  #include <fcntl.h>
>>> +#include <setjmp.h>
>>>  #include <sys/ioctl.h>
>>>  #include <sys/mman.h>
>>>  #include <asm/xenomai/syscall.h>
>>> @@ -17,6 +18,8 @@ __attribute__ ((weak))
>>>  pthread_key_t xeno_current_key;
>>>  __attribute__ ((weak))
>>>  pthread_once_t xeno_init_current_key_once = PTHREAD_ONCE_INIT;
>>> +__attribute__ ((weak))
>>> +jmp_buf xeno_sigill_jmpbuf;
>>>  
>>>  __attribute__ ((weak))
>>>  void xeno_set_current(void)
>>> @@ -99,13 +102,28 @@ static void unmap_sem_heap(unsigned long
>>>  }
>>>  #endif /* CONFIG_XENO_FASTSEM */
>>>  
>>> +void __attribute__((weak)) xeno_sigill_handler(int sig)
>>> +{
>>> +   siglongjmp(xeno_sigill_jmpbuf, 1);
>>> +}
>>> +
>> Just one question: Can we safely assume that sigsetjmp&siglongjump are
>> always available, also in uclibc environments e.g.?
> 
> Ok. We can use setjmp/longjmp and assume that only SIGILL is masked at
> the longjmp call site ?

Hmm, good question. But maybe this is a non-issue and sig{set|long}jmp
is actually always available (these days). On first glance, ucLibc seems
to have an implementation.

Alternative idea: What about defining a common xenomai_does_not_exist
service that warns and terminates? It could be called it both on ENOSYS
and from the signal handler.

Jan

-- 
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to