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 ?

-- 
                                                 Gilles.

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

Reply via email to