added (unfinished) nanosleep to APE

This commit is contained in:
aiju 2011-06-03 12:28:37 +00:00
parent 5a333eb240
commit 6ab691048d
3 changed files with 29 additions and 0 deletions

View file

@ -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

View file

@ -10,6 +10,7 @@ OFILES=\
sigset.$O\
sysconf.$O\
tzset.$O\
nanosleep.$O\
</sys/src/cmd/mksyslib

View file

@ -0,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;
}