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 pid 1
} }
sig {
chld 17
}
state { state {
exited 0x4 exited 0x4
} }

View File

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

View File

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

View File

@ -1,7 +1,7 @@
sockaddr_in_bsd { sockaddr_in_bsd {
sin_len int8 sin_len int8
sin_family int8 sin_family int8
sin_port int16 sin_port uint16
sin_addr int64 sin_addr int64
sin_zero 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 { const {
return syscall(63, fd, buffer, length) n {
} read 63
write 64
write(fd int, buffer *byte, length int) -> int { mmap 222
return syscall(64, fd, buffer, length) munmap 215
} openat 56
close 57
mmap(address int, length uint, protection int, flags int) -> *any { clone 220
return syscall(222, address, length, protection, flags) execve 221
} exit 93
waitid 95
munmap(address *any, length uint) -> int { socket 198
return syscall(215, address, length) 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 { const {
return syscall(0, fd, buffer, length) 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)
}