code wiki / (root) / nx_behavior_fixture_b_t297.nx

nx_behavior_fixture_b_t297.nx source

↩ module page · 22 lines · 1085 B

1import "nx_syscalls.nx" 2const BF_TAIL:i64=66 3func bf_eq(a:*u8,b:*u8)->i64{var i:i64=0;while a[i]!=(0 as u8){if a[i]!=b[i]{return 0};i=i+1};if b[i]!=(0 as u8){return 0};return 1} 4func main(argc:i64,argv:*i64)->i64{ 5 if argc<2{sys_write(1,"usage: fixture mode\n",20);return 2} 6 let mode:*u8=argv[1] as *u8 7 if bf_eq(mode,"sleep")==1{sys_sleep_ms(1000);return 0} 8 if bf_eq(mode,"signal")==1{let pid:i64=__syscall(172,0,0,0,0,0,0);nx_kill(pid,9);return 4} 9 if bf_eq(mode,"argc")==1{if argc==41{sys_write(1,"ARGUMENTS_VALID\n",16);return 0};return 3} 10 if bf_eq(mode,"large")==1{ 11 // Qualification fixture: exact tail after historical BP_CAP=262144. 12 let n:i64=262145;let p:*u8=sys_mmap_try(n);if (p as i64)<=0{return 5} 13 var i:i64=0;while i<n{p[i]=88 as u8;i=i+1};p[n-1]=BF_TAIL as u8 14 let rc:i64=sys_write(1,p,n);sys_munmap_direct(p,n);if rc!=n{return 6};return 0 15 } 16 sys_write(1,"MEASURED_FIXTURE\n",17) 17 if bf_eq(mode,"exit127")==1{return 127} 18 if bf_eq(mode,"exit139")==1{return 139} 19 if bf_eq(mode,"exit1")==1{return 1} 20 if bf_eq(mode,"exitvariant")==1{return BF_TAIL} 21 return 0 22}