2020-01-23 23:04:46 +03:00
|
|
|
// Copyright (c) 2019-2020 Alexander Medvednikov. All rights reserved.
|
2019-11-15 03:17:47 +03:00
|
|
|
// Use of this source code is governed by an MIT license
|
|
|
|
// that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
module os
|
|
|
|
|
|
|
|
const (
|
|
|
|
PROT_READ = 1
|
|
|
|
PROT_WRITE = 2
|
2019-12-31 21:53:15 +03:00
|
|
|
|
2019-11-15 03:17:47 +03:00
|
|
|
MAP_PRIVATE = 0x02
|
|
|
|
MAP_ANONYMOUS = 0x20
|
|
|
|
)
|
|
|
|
|
2019-12-31 21:53:15 +03:00
|
|
|
pub const (
|
|
|
|
sys_write = 1
|
|
|
|
sys_open = 2
|
|
|
|
sys_close = 3
|
|
|
|
sys_mkdir = 83
|
|
|
|
sys_creat = 85
|
|
|
|
)
|
|
|
|
|
|
|
|
|
2019-11-15 03:17:47 +03:00
|
|
|
|
|
|
|
/*
|
|
|
|
// TODO no pub => error
|
|
|
|
pub fn write(fd int, data voidptr, nbytes int) int {
|
|
|
|
return syscall5(
|
|
|
|
1, // SYS_write
|
|
|
|
fd,
|
|
|
|
data,
|
|
|
|
nbytes,
|
|
|
|
0, // ignored
|
|
|
|
0 // ignored
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn println(s string) {
|
|
|
|
write(1, (s + '\n').str, s.len)
|
|
|
|
}
|
|
|
|
|
|
|
|
fn mmap(start voidptr, len, prot, flags, fd, off int) byteptr {
|
|
|
|
return syscall6(9, start, len, prot, flags, fd, off) // sys_mmap
|
2019-12-31 21:53:15 +03:00
|
|
|
}
|
2019-11-15 03:17:47 +03:00
|
|
|
|
|
|
|
pub fn malloc(n int) byteptr {
|
|
|
|
println('malloc($n)')
|
|
|
|
return mmap(0, n, 3, 4098, //PROT_READ|PROT_WRITE,
|
|
|
|
-1,0) //MAP_PRIVATE|MAP_ANONYMOUS,
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn free(b byteptr) {
|
2019-12-31 21:53:15 +03:00
|
|
|
|
2019-11-15 03:17:47 +03:00
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
|