1: #include <signal.h>
   2: #include <setjmp.h>
   3: 
   4: static jmp_buf jmp;
   5: 
   6: sleep(n)
   7: unsigned n;
   8: {
   9:     int sleepx();
  10:     unsigned altime;
  11:     int (*alsig)() = SIG_DFL;
  12: 
  13:     if (n==0)
  14:         return;
  15:     altime = alarm(1000);   /* time to maneuver */
  16:     if (setjmp(jmp)) {
  17:         signal(SIGALRM, alsig);
  18:         alarm(altime);
  19:         return;
  20:     }
  21:     if (altime) {
  22:         if (altime > n)
  23:             altime -= n;
  24:         else {
  25:             n = altime;
  26:             altime = 1;
  27:         }
  28:     }
  29:     alsig = signal(SIGALRM, sleepx);
  30:     alarm(n);
  31:     for(;;)
  32:         pause();
  33:     /*NOTREACHED*/
  34: }
  35: 
  36: static
  37: sleepx()
  38: {
  39:     longjmp(jmp, 1);
  40: }

Defined functions

sleepx defined in line 36; used 2 times
  • in line 9, 29

Defined variables

jmp defined in line 4; used 2 times
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 416
Valid CSS Valid XHTML 1.0 Strict