home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / D / LIBC / LIBC-4.6 / LIBC-4 / libc-linux / sysdeps / linux / i386 / sigsuspend.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-08  |  479 b   |  25 lines

  1. #include <syscall.h>
  2. #include <sys/signal.h>
  3.  
  4. int sigsuspend(sigset_t *sigmask)
  5. {
  6.     int res;
  7.  
  8. #if defined(__PIC__) || defined (__pic__)
  9.     __asm__ volatile ("pushl %%ebx\n\t"
  10.               "movl %%esi,%%ebx\n\t"
  11.               "int $0x80\n\t"
  12.               "popl %%ebx"
  13.         :"=a" (res)
  14.         :"0" (SYS_sigsuspend), "S" (0), "c" (0), "d" (*sigmask));
  15. #else
  16.     __asm__("int $0x80"
  17.         :"=a" (res)
  18.         :"0" (SYS_sigsuspend), "b" (0), "c" (0), "d" (*sigmask));
  19. #endif
  20.     if (res >= 0)
  21.         return res;
  22.     errno = -res;
  23.     return -1;
  24. }
  25.