1 #include <signal.h> 2 #include "syscall.h" 3 sigsuspend(const sigset_t * mask)4int sigsuspend(const sigset_t *mask) 5 { 6 #ifdef __LITEOS_A__ 7 int ret, retval; 8 sigset_t oldset; 9 10 retval = sigprocmask(SIG_BLOCK, 0, &oldset); 11 if (retval != 0) { 12 return retval; 13 } 14 15 ret = syscall_cp(SYS_rt_sigsuspend, mask, _NSIG/8); 16 17 if (ret == -1) { 18 retval = sigprocmask(SIG_SETMASK, &oldset, 0); 19 if (retval != 0) { 20 return retval; 21 } 22 } 23 24 return ret; 25 #else 26 return syscall_cp(SYS_rt_sigsuspend, mask, _NSIG/8); 27 #endif 28 } 29