26 lines
1.0 KiB
C
26 lines
1.0 KiB
C
|
|
// tiny_c7_ultra_box.h - C7 ULTRA TLS box (UF-2: TLS freelist, coldはv3を利用)
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include <stddef.h>
|
|||
|
|
#include <stdint.h>
|
|||
|
|
#include "tiny_c7_ultra_segment_box.h"
|
|||
|
|
|
|||
|
|
// Hot box: per-thread TLS context (UF-1 ではフィールドは未使用だが将来の ULTRA 用に定義)
|
|||
|
|
typedef struct tiny_c7_ultra_tls_t {
|
|||
|
|
void* page_base; // ULTRA 専用 C7 ページ基底
|
|||
|
|
size_t block_size; // C7 ブロックサイズ
|
|||
|
|
uint32_t capacity; // ページ内スロット数
|
|||
|
|
uint32_t used; // 現在使用中スロット
|
|||
|
|
void* freelist; // ULTRA 用 freelist 先頭
|
|||
|
|
uint32_t page_idx; // セグメント内ページ index
|
|||
|
|
tiny_c7_ultra_segment_t* seg; // 所有セグメント
|
|||
|
|
tiny_c7_ultra_page_meta_t* page_meta; // 現在のページメタ
|
|||
|
|
} tiny_c7_ultra_tls_t;
|
|||
|
|
|
|||
|
|
// TLS accessor
|
|||
|
|
tiny_c7_ultra_tls_t* tiny_c7_ultra_tls_get(void);
|
|||
|
|
|
|||
|
|
// ULTRA alloc/free entry points(UF-1 は v3 C7 に委譲)
|
|||
|
|
void* tiny_c7_ultra_alloc(size_t size);
|
|||
|
|
void tiny_c7_ultra_free(void* ptr);
|