>From 3365723da2b4aa3f82f101f63649b3c03ee1898c Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Wed, 27 Jan 2016 00:54:25 +0000 Subject: [PATCH 2/2] fix siginfo_t for mips si_errno and si_code are swapped in mips siginfo_t compared to other archs and some si_code values are different. This fix is required for POSIX timers to work. based on patch by Dmitry Ivanov. --- arch/mips/bits/signal.h | 9 +++++++++ include/signal.h | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/arch/mips/bits/signal.h b/arch/mips/bits/signal.h index 818e0a7..889f77e 100644 --- a/arch/mips/bits/signal.h +++ b/arch/mips/bits/signal.h @@ -73,6 +73,15 @@ typedef struct __ucontext { #define SIG_UNBLOCK 2 #define SIG_SETMASK 3 +#undef SI_ASYNCIO +#undef SI_MESGQ +#undef SI_TIMER +#define SI_ASYNCIO (-2) +#define SI_MESGQ (-4) +#define SI_TIMER (-3) + +#define __SI_SWAP_ERRNO_CODE + #endif #define SIGHUP 1 diff --git a/include/signal.h b/include/signal.h index 8df725d..c6323c6 100644 --- a/include/signal.h +++ b/include/signal.h @@ -94,7 +94,11 @@ union sigval { }; typedef struct { +#ifdef __SI_SWAP_ERRNO_CODE + int si_signo, si_code, si_errno; +#else int si_signo, si_errno, si_code; +#endif union { char __pad[128 - 2*sizeof(int) - sizeof(long)]; struct { -- 2.7.0