Removed old syscalls

This commit is contained in:
2025-04-15 09:31:49 +02:00
parent 6483573923
commit 19a8154e06
7 changed files with 143 additions and 107 deletions

View File

@ -3,6 +3,10 @@ const {
pid 1
}
sig {
chld 17
}
state {
exited 0x4
}

View File

@ -8,14 +8,14 @@ main() {
loop {
io.write("λ ")
n := io.in(command)
n := io.read(command)
if n <= 0 {
return
}
command[n-1] = 0
pid := sys.fork()
pid := sys.clone(sig.chld, 0, 0, 0, 0)
if pid == 0 {
sys.execve(command, 0, 0)

View File

@ -1,6 +1,6 @@
sockaddr_in {
sin_family int16
sin_port int16
sin_port uint16
sin_addr int64
sin_zero int64
}

View File

@ -1,7 +1,7 @@
sockaddr_in_bsd {
sin_len int8
sin_family int8
sin_port int16
sin_port uint16
sin_addr int64
sin_zero int64
}

87
lib/sys/sys_linux.q Normal file
View File

@ -0,0 +1,87 @@
read(fd int, buffer *byte, length int) -> int {
return syscall(n.read, fd, buffer, length)
}
write(fd int, buffer *byte, length int) -> int {
return syscall(n.write, fd, buffer, length)
}
mmap(address int, length uint, protection int, flags int) -> *any {
return syscall(n.mmap, address, length, protection, flags)
}
munmap(address *any, length uint) -> int {
return syscall(n.munmap, address, length)
}
open(path *any, flags int, mode int) -> int {
return syscall(n.openat, -100, path, flags, mode)
}
close(fd int) -> int {
return syscall(n.close, fd)
}
clone(flags uint, stack *any, parent *int, child *int, tls uint) -> int {
return syscall(n.clone, flags, stack, parent, child, tls)
}
execve(path *any, argv *any, envp *any) -> int {
return syscall(n.execve, path, argv, envp)
}
exit(status int) {
syscall(n.exit, status)
}
waitid(type int, id int, info *any, options int) -> int {
return syscall(n.waitid, type, id, info, options)
}
socket(family int, type int, protocol int) -> int {
return syscall(n.socket, family, type, protocol)
}
accept(fd int, address *any, length int) -> int {
return syscall(n.accept, fd, address, length)
}
bind(fd int, address *sockaddr_in, length int) -> int {
return syscall(n.bind, fd, address, length)
}
listen(fd int, backlog int) -> int {
return syscall(n.listen, fd, backlog)
}
setsockopt(fd int, level int, optname int, optval *any, optlen int) -> int {
return syscall(n.setsockopt, fd, level, optname, optval, optlen)
}
getcwd(buffer *any, length int) -> int {
return syscall(n.getcwd, buffer, length)
}
chdir(path *any) -> int {
return syscall(n.chdir, path)
}
rename(old *any, new *any) -> int {
return syscall(n.renameat, -100, old, -100, new)
}
mkdir(path *any, mode int) -> int {
return syscall(n.mkdirat, -100, path, mode)
}
rmdir(path *any) -> int {
return syscall(n.unlinkat, -100, path, 0x200)
}
unlink(file *any) -> int {
return syscall(n.unlinkat, -100, file, 0)
}
nanosleep(duration *timespec) -> int {
return syscall(n.nanosleep, duration, 0)
}

View File

@ -1,15 +1,25 @@
read(fd int, buffer *byte, length int) -> int {
return syscall(63, fd, buffer, length)
}
write(fd int, buffer *byte, length int) -> int {
return syscall(64, fd, buffer, length)
}
mmap(address int, length uint, protection int, flags int) -> *any {
return syscall(222, address, length, protection, flags)
}
munmap(address *any, length uint) -> int {
return syscall(215, address, length)
const {
n {
read 63
write 64
mmap 222
munmap 215
openat 56
close 57
clone 220
execve 221
exit 93
waitid 95
socket 198
accept 202
bind 200
listen 201
setsockopt 208
getcwd 17
chdir 49
mkdirat 34
unlinkat 35
renameat 38
nanosleep 101
}
}

View File

@ -1,91 +1,26 @@
read(fd int, buffer *byte, length int) -> int {
return syscall(0, fd, buffer, length)
const {
n {
read 0
write 1
mmap 9
munmap 11
openat 257
close 3
clone 56
execve 59
exit 60
waitid 247
socket 41
accept 43
bind 49
listen 50
setsockopt 54
getcwd 79
chdir 80
mkdirat 258
unlinkat 263
renameat 264
nanosleep 35
}
}
write(fd int, buffer *byte, length int) -> int {
return syscall(1, fd, buffer, length)
}
open(path *any, flags int, mode int) -> int {
return syscall(2, path, flags, mode)
}
close(fd int) -> int {
return syscall(3, fd)
}
mmap(address int, length uint, protection int, flags int) -> *any {
return syscall(9, address, length, protection, flags)
}
munmap(address *any, length uint) -> int {
return syscall(11, address, length)
}
clone(flags uint, stack *any, parent *int, child *int, tls uint) -> int {
return syscall(56, flags, stack, parent, child, tls)
}
fork() -> int {
return syscall(57)
}
execve(path *any, argv *any, envp *any) -> int {
return syscall(59, path, argv, envp)
}
exit(status int) {
syscall(60, status)
}
waitid(type int, id int, info *any, options int) -> int {
return syscall(247, type, id, info, options)
}
socket(family int, type int, protocol int) -> int {
return syscall(41, family, type, protocol)
}
accept(fd int, address *any, length int) -> int {
return syscall(43, fd, address, length)
}
bind(fd int, address *sockaddr_in, length int) -> int {
return syscall(49, fd, address, length)
}
listen(fd int, backlog int) -> int {
return syscall(50, fd, backlog)
}
setsockopt(fd int, level int, optname int, optval *any, optlen int) -> int {
return syscall(54, fd, level, optname, optval, optlen)
}
getcwd(buffer *any, length int) -> int {
return syscall(79, buffer, length)
}
chdir(path *any) -> int {
return syscall(80, path)
}
rename(old *any, new *any) -> int {
return syscall(82, old, new)
}
mkdir(path *any, mode int) -> int {
return syscall(83, path, mode)
}
rmdir(path *any) -> int {
return syscall(84, path)
}
unlink(file *any) -> int {
return syscall(87, file)
}
nanosleep(duration *timespec) -> int {
return syscall(35, duration, 0)
}