some preliminaries for vdso clock support

these changes also make it so clock_gettime(CLOCK_REALTIME, &ts) works
even on pre-2.6 kernels, emulated via the gettimeofday syscall. there
is no cost for the fallback check, as it falls under the error case
that already must be checked for storing the error code in errno, but
which would normally be hidden inside __syscall_ret.
This commit is contained in:
Rich Felker
2011-07-23 23:45:33 -04:00
parent c0fe5b9da9
commit e3eb49321c
3 changed files with 35 additions and 7 deletions

View File

@ -1,8 +1,13 @@
#include <time.h>
#include <sys/time.h>
#include "syscall.h"
int gettimeofday(struct timeval *tv, void *tz)
{
__syscall(SYS_gettimeofday, tv, 0);
struct timespec ts;
if (!tv) return 0;
clock_gettime(CLOCK_REALTIME, &ts);
tv->tv_sec = ts.tv_sec;
tv->tv_usec = (int)ts.tv_nsec / 1000;
return 0;
}