Removed old syscalls
This commit is contained in:
@ -3,6 +3,10 @@ const {
|
|||||||
pid 1
|
pid 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sig {
|
||||||
|
chld 17
|
||||||
|
}
|
||||||
|
|
||||||
state {
|
state {
|
||||||
exited 0x4
|
exited 0x4
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
87
lib/sys/sys_linux.q
Normal 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)
|
||||||
|
}
|
@ -1,15 +1,25 @@
|
|||||||
read(fd int, buffer *byte, length int) -> int {
|
const {
|
||||||
return syscall(63, fd, buffer, length)
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
|
||||||
}
|
}
|
@ -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)
|
|
||||||
}
|
|
Reference in New Issue
Block a user