#ifndef HAKMEM_TINY_STATS_API_H #define HAKMEM_TINY_STATS_API_H #include #include #include // Phase 2, Module 1: Statistics and Debug API // Extracted from hakmem_tiny.c (lines 4348-4728) // Cold path functions - zero performance impact // Statistics API void hak_tiny_get_stats(uint64_t* alloc_count, uint64_t* free_count, uint64_t* slab_count); void hak_tiny_print_stats(void); // Memory profiling (toggle with HAKMEM_DEBUG_MEMORY) void hak_tiny_print_memory_profile(void); // Debug counters (toggle with HAKMEM_DEBUG_COUNTERS) void hak_tiny_ultra_debug_dump(void); void hak_tiny_path_debug_dump(void); void hak_tiny_debug_counters_dump(void); // Immediate dump of all counters (Refill/Publish/Free/Cache) void hak_tiny_dump_all_counters_now(void); // Cooperative stats polling hook (no-op since Phase 4d master stats) static inline __attribute__((always_inline)) void hak_tiny_stats_poll(void) { (void)0; } // SuperSlab adopt/publish debug counters (per class) extern unsigned long long g_ss_publish_dbg[]; extern unsigned long long g_ss_adopt_dbg[]; // Slab-ring counters (per class) extern unsigned long long g_slab_publish_dbg[]; extern unsigned long long g_slab_adopt_dbg[]; extern unsigned long long g_slab_requeue_dbg[]; extern unsigned long long g_slab_miss_dbg[]; // Refill-stage counters extern unsigned long long g_rf_total_calls[]; extern unsigned long long g_rf_hit_bench[]; extern unsigned long long g_rf_hit_hot[]; extern unsigned long long g_rf_hit_mail[]; extern unsigned long long g_rf_hit_slab[]; extern unsigned long long g_rf_hit_ss[]; extern unsigned long long g_rf_hit_reg[]; extern unsigned long long g_rf_mmap_calls[]; extern unsigned long long g_rf_time_total_ns[]; extern unsigned long long g_rf_time_hot_ns[]; extern unsigned long long g_rf_time_bench_ns[]; extern unsigned long long g_rf_time_mail_ns[]; extern unsigned long long g_rf_time_slab_ns[]; extern unsigned long long g_rf_time_ss_ns[]; extern unsigned long long g_rf_time_reg_ns[]; extern unsigned long long g_rf_time_mmap_ns[]; extern unsigned long long g_pub_mail_hits[]; extern unsigned long long g_pub_hot_hits[]; extern unsigned long long g_pub_bench_hits[]; // Free pipeline visibility extern unsigned long long g_free_via_ss_local[]; extern unsigned long long g_free_via_ss_remote[]; extern unsigned long long g_free_via_tls_sll[]; extern unsigned long long g_free_via_mag[]; // Front Gate Breakdown (debug counters) extern unsigned long long g_front_sfc_hit[]; extern unsigned long long g_front_sll_hit[]; extern unsigned long long g_front_quick_hit[]; extern unsigned long long g_front_mag_hit[]; // Free-side trigger counters extern unsigned long long g_first_free_transitions[]; extern unsigned long long g_remote_free_transitions[]; // Adopt/Registry gate counters extern unsigned long long g_adopt_gate_calls[]; extern unsigned long long g_adopt_gate_success[]; extern unsigned long long g_reg_scan_attempts[]; extern unsigned long long g_reg_scan_hits[]; extern unsigned long long g_free_via_fast_tls[]; extern unsigned long long g_free_via_fastcache[]; extern unsigned long long g_fast_spare_flush[]; extern unsigned long long g_fast_push_hits[]; extern unsigned long long g_fast_push_full[]; extern unsigned long long g_fast_push_disabled[]; extern unsigned long long g_fast_push_zero_cap[]; extern unsigned long long g_fast_push_gate_disabled[]; extern unsigned long long g_fast_push_gate_zero_cap[]; extern unsigned long long g_fast_spare_attempts[]; extern unsigned long long g_fast_spare_disabled[]; extern unsigned long long g_fast_spare_empty[]; extern unsigned long long g_fast_spare_lookup_fail[]; extern unsigned long long g_fast_spare_bad_index[]; extern unsigned long long g_fast_lookup_ss[]; extern unsigned long long g_fast_lookup_slab[]; extern unsigned long long g_fast_lookup_none; // Publish pipeline visibility extern unsigned long long g_pub_notify_calls[]; extern unsigned long long g_pub_same_empty[]; extern unsigned long long g_remote_transitions[]; extern unsigned long long g_mailbox_register_calls[]; extern unsigned long long g_mailbox_slow_discoveries[]; extern uint64_t g_ss_cache_hits[]; extern uint64_t g_ss_cache_misses[]; extern uint64_t g_ss_cache_puts[]; extern uint64_t g_ss_cache_drops[]; extern uint64_t g_ss_cache_precharged[]; extern uint64_t g_superslabs_reused; extern uint64_t g_superslabs_cached; #endif // HAKMEM_TINY_STATS_API_H