mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-02 07:28:21 +00:00
syscalls: clock_get
This commit is contained in:
@@ -34,7 +34,8 @@ extern syscall_fchmodat
|
|||||||
extern syscall_openat
|
extern syscall_openat
|
||||||
extern syscall_chroot
|
extern syscall_chroot
|
||||||
extern syscall_mkdirat
|
extern syscall_mkdirat
|
||||||
func_count equ 33
|
extern syscall_clock_gettime
|
||||||
|
func_count equ 34
|
||||||
|
|
||||||
|
|
||||||
func_table:
|
func_table:
|
||||||
@@ -71,6 +72,7 @@ func_table:
|
|||||||
dq syscall_openat
|
dq syscall_openat
|
||||||
dq syscall_chroot
|
dq syscall_chroot
|
||||||
dq syscall_mkdirat
|
dq syscall_mkdirat
|
||||||
|
dq syscall_clock_gettime
|
||||||
section .text
|
section .text
|
||||||
global asm_syscall_entry
|
global asm_syscall_entry
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user