1 /* 2 ** Copyright 2001, Manuel J. Petit. All rights reserved. 3 ** Distributed under the terms of the NewOS License. 4 */ 5 6 #include <unistd.h> 7 8 #include <pthread.h> 9 10 #include <syscalls.h> 11 12 13 unsigned 14 sleep(unsigned seconds) 15 { 16 bigtime_t usecs; 17 bigtime_t start; 18 int err; 19 20 start = system_time(); 21 22 usecs = 1000000; 23 usecs *= (bigtime_t) seconds; 24 25 err = snooze_until(start + usecs, B_SYSTEM_TIMEBASE); 26 27 pthread_testcancel(); 28 29 if (err) 30 return seconds - (unsigned)((system_time() - start) / 1000000); 31 32 return 0; 33 } 34