nx_behavior_fixture_a_t297.nx source
↩ module page · 22 lines · 1085 B
1import "nx_syscalls.nx"
2const BF_TAIL:i64=65
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}