diff --git a/kernel/futex.c b/kernel/futex.c index f53a405d..baae867f 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -79,6 +79,8 @@ #define dkprintf(...) do { if (0) kprintf(__VA_ARGS__); } while (0) #endif +extern struct sigpending *hassigpending(struct thread *thread); + int futex_cmpxchg_enabled; /** @@ -775,6 +777,11 @@ retry: if (timeout && !time_remain) goto out_put_key; + if(hassigpending(cpu_local_var(current))){ + ret = -EINTR; + goto out_put_key; + } + /* RIKEN: no signals */ put_futex_key(fshared, &q.key); goto retry;