Added time.sleep function

This commit is contained in:
Eduard Urbach 2025-02-02 17:04:58 +01:00
parent 271ae0fb18
commit 715635aaa7
Signed by: akyoto
GPG Key ID: C874F672B1AF20C0
3 changed files with 25 additions and 2 deletions

View File

@ -1,5 +1,6 @@
import sys
import thread
import time
main() {
thread.create(work)
@ -10,6 +11,7 @@ main() {
work() {
sys.write(1, "[ ] start\n", 10)
time.sleep(10 * 1000 * 1000)
sys.write(1, "[x] end\n", 8)
sys.exit(0)
}

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
}
}
}