code wiki / (root) / nx_store_id_probe.nx

nx_store_id_probe.nx source

↩ module page · 36 lines · 1468 B

1import "nx_store_id_lookup_lib.nx" 2import "nx_fsops_lib.nx" 3func main(argc: i64, argv: *i64) -> i64 { 4 if argc != 3 { fsx_puts("usage: nx_store_id_probe <prefix> <id> 5" as *u8); return 2 } 6 let prefix: *u8 = argv[1] as *u8 7 let id: *u8 = argv[2] as *u8 8 if fsx_denied(prefix) == 1 { return FSX_RC_DENIED } 9 let generation: i64 = ss_max_segid(prefix) 10 if generation < 0 { return 3 } 11 var reference: i64 = 0 - 2 12 var round: i64 = 0 13 while round < 4 { 14 var lane: i64 = 0 15 while lane < 2 { 16 let direct: i64 = (round+lane)%2 17 let start: i64 = sys_now_us() 18 var seq: i64 = 0 - 1 19 if direct == 1 { seq=sid_find_seq(prefix,id) } else { seq=sts_find_seq(prefix,id) } 20 let elapsed: i64 = sys_now_us()-start 21 fsx_puts("round=" as *u8);fsx_putn(round);fsx_puts(" direct=" as *u8);fsx_putn(direct) 22 fsx_puts(" seq=" as *u8);fsx_putn(seq);fsx_puts(" elapsed_us=" as *u8);fsx_putn(elapsed);fsx_puts(" 23" as *u8) 24 if reference == 0-2 { reference=seq } 25 if ss_max_segid(prefix) != generation { fsx_puts("INCONCLUSIVE generation-changed 26" as *u8);return 4 } 27 if seq != reference { fsx_puts("MISMATCH same-generation 28" as *u8);return 5 } 29 lane=lane+1 30 } 31 round=round+1 32 } 33 fsx_puts("MATCH same-generation; first lookup includes cold handle setup; later timings are warm; read-only 34" as *u8) 35 return 0 36}