summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/time.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/time.c b/lib/time.c
index 0f4a251..ab28f71 100644
--- a/lib/time.c
+++ b/lib/time.c
@@ -1,3 +1,4 @@
+#include <signal.h>
#include <time.h>
#include <unistd.h>
@@ -5,8 +6,10 @@ _syscall0(time_t, time);
_syscall1(int, alarm, unsigned int, seconds);
-void sleep(time_t t) {
- time_t start = time();
+static void sleepsig(int sig) {}
- while(time() < start + t);
+void sleep(time_t t) {
+ signal(SIGALRM, &sleepsig);
+ alarm(t);
+ pause();
}