8#define LOG_INITIAL_QUEUE_SIZE 32
9#define LOG_MAX_QUEUE_SIZE 262144
11extern atomic(
bool) _log_running;
12extern Mutex _log_run_lock;
13extern Thread* _log_thread;
25typedef struct LogEntry LogEntry;
26typedef struct LogEntry {
36extern int _log_max_level;
38extern PrQueue _log_queue;
41extern Mutex _log_op_lock;
42extern sa_LogDest _log_dests;
43extern hashtable _log_categories;
47void logCheckInit(
void);
48void logDestroyEnt(_In_ LogEntry* ent);
49void logQueueAdd(_In_ LogEntry* ent);
50void logThreadCreate(
void);
53bool logUnregisterDestLocked(_In_ LogDest* dhandle);
59 return !testcat || !testcat->priv;
62 return filtercat == testcat;
Generic type-safe containers with runtime type system integration.
#define saDeclarePtr(name)
struct LogDest LogDest
Opaque handle to a registered log destination.
void(* LogDestMsg)(int level, LogCategory *cat, int64 timestamp, strref msg, uint32 batchid, void *userdata)
void(* LogDestBatchDone)(uint32 batchid, void *userdata)
void(* LogDestClose)(void *userdata)
Threading system aggregated header.
Thread-safe lazy initialization.
State tracker for lazy initialization.