nx_x86_syscall_test.nx source
↩ module page · 35 lines · 926 B
1// nx_x86_syscall_test.nx -- minimal x86_64 syscall surface smoke.
2
3import "nx_syscalls_x86_64.nx"
4
5func main() -> i64 {
6 let buf: *u8 = sys_mmap(256)
7 if buf == (0 as *u8) { return 10 }
8
9 buf[0] = 0x4E
10 buf[1] = 0x49
11 buf[2] = 0x53
12 buf[3] = 0x48
13 buf[4] = 0x49
14 buf[5] = 0x0A
15
16 let path: *u8 = sys_mmap(64)
17 path[0]=0x2F; path[1]=0x74; path[2]=0x6D; path[3]=0x70; path[4]=0x2F
18 path[5]=0x6E; path[6]=0x78; path[7]=0x5F; path[8]=0x78
19 path[9]=0x38; path[10]=0x36; path[11]=0x5F
20 path[12]=0x73; path[13]=0x79; path[14]=0x73; path[15]=0x2E
21 path[16]=0x6F; path[17]=0x75; path[18]=0x74
22 path[19]=0
23
24 let fd: i64 = sys_openat_wr(path, 0x1A4)
25 if fd < 0 { return 20 }
26 let n_w: i64 = sys_write(fd, buf, 6)
27 if n_w != 6 { return 21 }
28 let v_cl: i64 = sys_close(fd)
29 if v_cl != 0 { return 22 }
30
31 let t: i64 = sys_now_ms()
32 if t <= 0 { return 30 }
33
34 return 0
35}