From 6ab691048d0b87263a746e82fed55629243fcf4b Mon Sep 17 00:00:00 2001 From: aiju Date: Fri, 3 Jun 2011 12:28:37 +0000 Subject: added (unfinished) nanosleep to APE --- sys/include/ape/time.h | 6 ++++++ sys/src/ape/lib/ap/posix/mkfile | 1 + sys/src/ape/lib/ap/posix/nanosleep.c | 22 ++++++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 sys/src/ape/lib/ap/posix/nanosleep.c diff --git a/sys/include/ape/time.h b/sys/include/ape/time.h index 7c672fcca..73dfc797d 100644 --- a/sys/include/ape/time.h +++ b/sys/include/ape/time.h @@ -52,6 +52,12 @@ extern char *ctime_r(const time_t *, char *); #ifdef _POSIX_SOURCE extern void tzset(void); + +struct timespec { + time_t tv_sec; + long tv_nsec; +}; +extern int nanosleep(const struct timespec *req, struct timespec *rem); #endif #ifdef __cplusplus diff --git a/sys/src/ape/lib/ap/posix/mkfile b/sys/src/ape/lib/ap/posix/mkfile index 268a991d0..387208c5e 100644 --- a/sys/src/ape/lib/ap/posix/mkfile +++ b/sys/src/ape/lib/ap/posix/mkfile @@ -10,6 +10,7 @@ OFILES=\ sigset.$O\ sysconf.$O\ tzset.$O\ + nanosleep.$O\ +#include +#include "../plan9/sys9.h" + +int +nanosleep(struct timespec *req, struct timespec *rem) +{ + int ms; + + ms = req->tv_sec * 1000 + (req->tv_nsec + 999999) / 1000000; + if(_SLEEP(ms) < 0) { + if(rem) { + rem->tv_sec = rem->tv_nsec = 0; /* needs better handling */ + } + return -1; + } + if(rem) + rem->tv_sec = rem->tv_nsec = 0; + return 0; +} -- cgit v1.2.3 From 97d3ff1bee2a737ce334ecf1ac962bb74de9df75 Mon Sep 17 00:00:00 2001 From: aiju Date: Fri, 3 Jun 2011 13:43:25 +0000 Subject: added EWOULDBLOCK --- sys/include/ape/errno.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/include/ape/errno.h b/sys/include/ape/errno.h index b268d96e0..6e821c28d 100644 --- a/sys/include/ape/errno.h +++ b/sys/include/ape/errno.h @@ -13,6 +13,7 @@ extern int errno; #define E2BIG 1 #define EACCES 2 #define EAGAIN 3 +#define EWOULDBLOCK 3 #define EBADF 4 #define EBUSY 5 #define ECHILD 6 -- cgit v1.2.3