code wiki / (root) / nx_x86_open_diag_test.nx

nx_x86_open_diag_test.nx source

↩ module page · 25 lines · 933 B

1// nx_x86_open_diag_test.nx -- diagnose sys_openat on x86_64 native. 2 3import "nx_syscalls.nx" 4import "nx_tier.nx" 5 6func main() -> i64 { 7 let path: *u8 = sys_mmap(64) 8 path[0]=0x2F as u8; path[1]=0x74 as u8; path[2]=0x6D as u8; path[3]=0x70 as u8 9 path[4]=0x2F as u8; path[5]=0x6E as u8; path[6]=0x78 as u8; path[7]=0x5F as u8 10 path[8]=0x72 as u8; path[9]=0x65 as u8; path[10]=0x61 as u8; path[11]=0x6C as u8 11 path[12]=0x5F as u8; path[13]=0x6D as u8; path[14]=0x6F as u8; path[15]=0x64 as u8 12 path[16]=0x65 as u8; path[17]=0x6C as u8; path[18]=0x2E as u8 13 path[19]=0x67 as u8; path[20]=0x67 as u8; path[21]=0x75 as u8; path[22]=0x66 as u8 14 path[23]=0 as u8 15 16 let fd: i64 = sys_openat_rd(path) 17 if fd < 0 { 18 // Negative fd = -errno. Return as positive small value. 19 let err: i64 = 0 - fd 20 if err > 250 { return 250 } 21 return err as i64 22 } 23 sys_close(fd) 24 return 0 25}