convert to DEV_BSIZE size directory blocks
[unix-history] / usr / src / lib / libc / gen / sleep.c
CommitLineData
cc749e07
BJ
1/* @(#)sleep.c 4.1 (Berkeley) %G% */
2#include <signal.h>
3#include <setjmp.h>
4
5static jmp_buf jmp;
6
7sleep(n)
8unsigned n;
9{
10 int sleepx();
11 unsigned altime;
12 int (*alsig)() = SIG_DFL;
13
14 if (n==0)
15 return;
16 altime = alarm(1000); /* time to maneuver */
17 if (setjmp(jmp)) {
18 signal(SIGALRM, alsig);
19 alarm(altime);
20 return;
21 }
22 if (altime) {
23 if (altime > n)
24 altime -= n;
25 else {
26 n = altime;
27 altime = 1;
28 }
29 }
30 alsig = signal(SIGALRM, sleepx);
31 alarm(n);
32 for(;;)
33 pause();
34 /*NOTREACHED*/
35}
36
37static
38sleepx()
39{
40 longjmp(jmp, 1);
41}