home *** CD-ROM | disk | FTP | other *** search
- #include <syscall.h>
- #include <sys/signal.h>
-
- 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;
- }
-