ref: a788c6612b919328376bb6ea6720b25b5cf217d9
parent: da3b48cfe8e56fd808c04aea9c1cc66a672673f1
author: aiju <aiju@phicode.de>
date: Fri Jun 3 08:28:37 EDT 2011
added (unfinished) nanosleep to APE
--- a/sys/include/ape/time.h
+++ b/sys/include/ape/time.h
@@ -52,6 +52,12 @@
#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
--- a/sys/src/ape/lib/ap/posix/mkfile
+++ b/sys/src/ape/lib/ap/posix/mkfile
@@ -10,6 +10,7 @@
sigset.$O\
sysconf.$O\
tzset.$O\
+ nanosleep.$O\
</sys/src/cmd/mksyslib
--- /dev/null
+++ b/sys/src/ape/lib/ap/posix/nanosleep.c
@@ -1,0 +1,22 @@
+#define _PLAN9_SOURCE
+#include "../plan9/lib.h"
+#include <sys/types.h>
+#include <time.h>
+#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;
+}
--
⑨