diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/syscalls.c | 16 | ||||
| -rw-r--r-- | kernel/timer.c | 8 |
2 files changed, 22 insertions, 2 deletions
diff --git a/kernel/syscalls.c b/kernel/syscalls.c index 31579e1..e3db767 100644 --- a/kernel/syscalls.c +++ b/kernel/syscalls.c @@ -6,6 +6,7 @@ #include "kernel/kernel.h" #include "kernel/config.h" #include <sys/stat.h> +#include <sys/time.h> #include <stdbool.h> #include <stddef.h> @@ -15,9 +16,20 @@ int syscall_unhandled(int nr) panic(FOOLOS_MODULE_NAME,"unhandled syscall (generic handler)"); } -int syscall_gettimeofday(void *timeval, void *tz) +int syscall_gettimeofday(struct timeval *tv, struct timezone *tz) { - return -1; + if(tv!=NULL) + { + uint32_t t=timer_get_ms(); + tv->tv_sec=t/1000; + tv->tv_usec=0;//t-tv->tv_sec*1000; + } + if(tz!=NULL) + { + tz->tz_minuteswest=0; + tz->tz_dsttime=DST_NONE; + } + return 0; } int syscall_lseek(int file,int ptr,int dir) diff --git a/kernel/timer.c b/kernel/timer.c index 5adc986..9ca748c 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -73,3 +73,11 @@ uint64_t timer_get_ticks() { return task_system_clock; } + +uint32_t timer_get_ms() +{ + uint32_t t=timer_get_ticks(); + uint32_t s=t/25; + uint32_t ms=t*1000/25-1000*s; + return s*1000;//+ms; +} |
