Added time.sleep function

This commit is contained in:
Eduard Urbach 2025-02-02 17:04:58 +01:00
parent 819a4a907b
commit 0db4d4fc14
Signed by: eduard
GPG key ID: 49226B848C78F6C8
3 changed files with 25 additions and 2 deletions

View file

@ -22,8 +22,8 @@ munmap(address Pointer, length Int) -> Int {
return syscall(11, address, length)
}
nanosleep(requested Pointer, remaining Pointer) -> Int {
return syscall(35, requested, remaining)
nanosleep(timespec Pointer) -> Int {
return syscall(35, timespec, 0)
}
clone(flags Int, stack Pointer) -> Int {

21
lib/time/time.q Normal file
View file

@ -0,0 +1,21 @@
import mem
import sys
sleep(nanoseconds Int) {
seconds := 0
loop {
if nanoseconds >= 1000000000 {
nanoseconds = nanoseconds - 1000000000
seconds += 1
} else {
timespec := mem.alloc(16)
store(timespec, 8, seconds)
offset := timespec + 8
store(offset, 8, nanoseconds)
sys.nanosleep(timespec)
mem.free(timespec, 16)
return
}
}
}