Fix sleep 99999999
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 27 Sep 2017 18:30:57 +0000 (14:30 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 29 Sep 2017 14:00:03 +0000 (10:00 -0400)
Due to various int-vs-long issues, if you slept for 99999999, you'd
sleep for 275000000 usec (275 sec).

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/syscall.c
tests/sleep.c

index d4ffa34..a45e395 100644 (file)
@@ -621,7 +621,7 @@ static int sys_nanosleep(struct proc *p,
                poperror();
                return -1;
        }
-       sysc_save_str("nanosleep for %d usec", usec);
+       sysc_save_str("nanosleep for %lu usec", usec);
        kthread_usleep(usec);
        poperror();
        return 0;
index 4cea7b9..f79ef7f 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdio.h>
 #include <stdlib.h>
-#include <parlib/parlib.h>
+#include <unistd.h>
+#include <limits.h>
 
 int main(int argc, char **argv)
 {
@@ -12,7 +13,6 @@ int main(int argc, char **argv)
        }
        sleep_time = atoi(argv[1]);
        if (sleep_time < 0)
-               exit(-1);
-       sys_block(sleep_time * 1000000);
-       return 0;
+               sleep_time = UINT_MAX;
+       return sleep(sleep_time);
 }