code wiki / (root) / nx_x86_syscall_test.nx

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}