Implemented length storage of allocated memory
This commit is contained in:
21
lib/io/io.q
Normal file
21
lib/io/io.q
Normal 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))
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
Reference in New Issue
Block a user