#include #include int sigsuspend(sigset_t *sigmask) { int res; #if defined(__PIC__) || defined (__pic__) __asm__ volatile ("pushl %%ebx\n\t" "movl %%esi,%%ebx\n\t" "int $0x80\n\t" "popl %%ebx" :"=a" (res) :"0" (SYS_sigsuspend), "S" (0), "c" (0), "d" (*sigmask)); #else __asm__("movel %1,d0\n\t" "clrl d1\n\t" "clrl d2\n\t" "movel %2,d3\n\t" "trap #0\n\t" "movel d0,%0" :"=g" (res) :"i" (SYS_sigsuspend), "g" (*sigmask) : "d0", "d1", "d2", "d3"); #endif if (res >= 0) return res; errno = -res; return -1; }