use tid/pid-specifying spall functions

This commit is contained in:
Ryan Fleury
2025-05-22 09:34:47 -07:00
parent d254d8edb4
commit 3fcdb85ebf
2 changed files with 12 additions and 2 deletions
+9 -1
View File
@@ -5,11 +5,19 @@
internal inline void internal inline void
spall_begin(char *fmt, ...) spall_begin(char *fmt, ...)
{ {
if(spall_pid == 0)
{
spall_pid = os_get_process_info()->pid;
}
if(spall_tid == 0)
{
spall_tid = os_tid();
}
Temp scratch = scratch_begin(0, 0); Temp scratch = scratch_begin(0, 0);
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
String8 string = push_str8fv(scratch.arena, fmt, args); String8 string = push_str8fv(scratch.arena, fmt, args);
spall_buffer_begin(&spall_profile, &spall_buffer, string.str, string.size, os_now_microseconds()); spall_buffer_begin_ex(&spall_profile, &spall_buffer, string.str, string.size, os_now_microseconds(), spall_tid, spall_pid);
va_end(args); va_end(args);
scratch_end(scratch); scratch_end(scratch);
} }
+3 -1
View File
@@ -73,10 +73,12 @@ scratch_end(scratch); \
global U64 spall_capturing = 1; global U64 spall_capturing = 1;
global SpallProfile spall_profile = {0}; global SpallProfile spall_profile = {0};
thread_static SpallBuffer spall_buffer = {0}; thread_static SpallBuffer spall_buffer = {0};
thread_static U32 spall_tid = 0;
thread_static U32 spall_pid = 0;
internal inline void spall_begin(char *fmt, ...); internal inline void spall_begin(char *fmt, ...);
# define ProfBegin(...) (spall_capturing ? (spall_begin(__VA_ARGS__), 0) : 0) # define ProfBegin(...) (spall_capturing ? (spall_begin(__VA_ARGS__), 0) : 0)
# define ProfBeginDynamic(...) (spall_capturing ? (spall_begin(__VA_ARGS__), 0) : 0) # define ProfBeginDynamic(...) (spall_capturing ? (spall_begin(__VA_ARGS__), 0) : 0)
# define ProfEnd(...) (spall_capturing ? (spall_buffer_end(&spall_profile, &spall_buffer, os_now_microseconds())), 0 : 0) # define ProfEnd(...) (spall_capturing ? (spall_buffer_end_ex(&spall_profile, &spall_buffer, os_now_microseconds(), spall_tid, spall_pid)), 0 : 0)
# define ProfTick(...) # define ProfTick(...)
# define ProfIsCapturing(...) (!!spall_capturing) # define ProfIsCapturing(...) (!!spall_capturing)
# define ProfBeginCapture(...) (spall_capturing = 1) # define ProfBeginCapture(...) (spall_capturing = 1)