Implemented length storage of allocated memory

This commit is contained in:
Eduard Urbach 2025-02-09 14:14:41 +01:00
parent 79bb606e8d
commit 3043e4e2c4
Signed by: eduard
GPG key ID: 49226B848C78F6C8
27 changed files with 134 additions and 49 deletions

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

@ -0,0 +1,21 @@
import sys
in(buffer Pointer) -> Int {
return sys.read(0, buffer, len(buffer))
}
out(message Pointer) -> Int {
return sys.write(1, message, len(message))
}
error(message Pointer) -> Int {
return sys.write(2, message, len(message))
}
read(fd Int, buffer Pointer) -> Int {
return sys.read(fd, buffer, len(buffer))
}
write(fd Int, message Pointer) -> Int {
return sys.write(fd, message, len(message))
}

View file

@ -1,5 +1,12 @@
import sys
alloc(length Int) -> Pointer {
return sys.mmap(0, length, 0x1|0x2, 0x02|0x20)
x := sys.mmap(0, length+8, 0x1|0x2, 0x02|0x20)
if x <= 0 {
return x
}
store(x, 8, length)
return x + 8
}

View file

@ -1,5 +1,12 @@
import sys
alloc(length Int) -> Pointer {
return sys.mmap(0, length, 0x1|0x2, 0x02|0x1000)
x := sys.mmap(0, length, 0x1|0x2, 0x02|0x1000)
if x <= 0 {
return x
}
store(x, 8, length)
return x + 8
}

View file

@ -1,5 +1,12 @@
import sys
alloc(length Int) -> Pointer {
return sys.mmap(0, length, 0x0004, 0x3000)
x := sys.mmap(0, length, 0x0004, 0x3000)
if x <= 0 {
return x
}
store(x, 8, length)
return x + 8
}

View file

@ -1,3 +1,9 @@
read(fd Int, address Pointer, length Int) -> Int {
kernel32.ReadFile(fd, address, length)
return length
}
write(fd Int, address Pointer, length Int) -> Int {
return kernel32.WriteFile(fd, address, length)
kernel32.WriteFile(fd, address, length)
return length
}