syscalls: clock_get

This commit is contained in:
Matheus
2022-10-17 14:29:29 -03:00
parent 89e5c99828
commit ef782edab2
2 changed files with 36 additions and 1 deletions
+3 -1
View File
@@ -34,7 +34,8 @@ extern syscall_fchmodat
extern syscall_openat
extern syscall_chroot
extern syscall_mkdirat
func_count equ 33
extern syscall_clock_gettime
func_count equ 34
func_table:
@@ -71,6 +72,7 @@ func_table:
dq syscall_openat
dq syscall_chroot
dq syscall_mkdirat
dq syscall_clock_gettime
section .text
global asm_syscall_entry
+33
View File
@@ -0,0 +1,33 @@
#include <kernel/syscalls.h>
#include <arch/timekeeper.h>
#include <kernel/vmm.h>
#include <time.h>
#include <errno.h>
#define CLOCK_REALTIME 0
syscallret syscall_clock_gettime(int clockid, struct timespec *tp){
syscallret retv;
retv.errno = 0;
if(tp > USER_SPACE_END){
retv.errno = EFAULT;
retv.ret = -1;
return retv;
}
switch(clockid){
case CLOCK_REALTIME:
*tp = arch_timekeeper_gettime();
break;
default:
retv.errno = EINVAL;
}
retv.ret = retv.errno ? -1 : 0;
return retv;
}