code wiki / _hdl_build / _dcb_probe2.nx

_dcb_probe2.nx source

↩ module page · 29 lines · 1247 B

1// _dcb_probe2.nx -- raw wait-status probe: exec the KG-built elf (which 2// exits 0 from bash, empty-env included) from a sovereign-compiled parent 3// and print the UNDECODED wait4 status word. license_tier: ORIGINAL 4import "nx_syscalls.nx" 5 6func p2_w(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 7func p2_n(v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m; sys_write(1,"-" as *u8,1)}; let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48;k=1}; while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1}; var i: i64=0; while i<k{bb[i]=t[k-1-i];i=i+1}; sys_write(1,bb,k); return 0 } 8 9func main() -> i64 { 10 let st: *i64 = sys_mmap(16) as *i64 11 st[0] = 999999 12 let pid: i64 = sys_fork() 13 if pid == 0 { 14 let argv: *i64 = sys_mmap(32) as *i64 15 argv[0] = "/tmp/_dcbp0.elf" as *u8 as i64 16 argv[1] = 0 17 let envp: *i64 = sys_mmap(16) as *i64 18 envp[0] = 0 19 sys_execve("/tmp/_dcbp0.elf" as *u8, argv, envp) 20 sys_exit(125) 21 } 22 let wr: i64 = sys_wait4(pid, st, 0) 23 p2_w("RAWWAIT pid=" as *u8); p2_n(pid) 24 p2_w(" wait_ret=" as *u8); p2_n(wr) 25 p2_w(" st0=" as *u8); p2_n(st[0]) 26 p2_w("\n" as *u8) 27 sys_exit(0) 28 return 0 29}