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