mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-10-03 22:45:44 +00:00
pass requested gen to artifact creation hooks, use to retry ctrl memory reads on many successive mem gen bumps - prevents spurious duplicate hashes in content store history
This commit is contained in:
+10
-7
@@ -5977,7 +5977,7 @@ ctrl_thread__single_step(DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg)
|
||||
//~ rjf: Process Memory Artifact Cache Hooks / Lookups
|
||||
|
||||
internal AC_Artifact
|
||||
ctrl_memory_artifact_create(String8 key, B32 *cancel_signal, B32 *retry_out)
|
||||
ctrl_memory_artifact_create(String8 key, U64 gen, B32 *cancel_signal, B32 *retry_out)
|
||||
{
|
||||
AC_Artifact artifact = {0};
|
||||
{
|
||||
@@ -6007,7 +6007,7 @@ ctrl_memory_artifact_create(String8 key, B32 *cancel_signal, B32 *retry_out)
|
||||
U64 zero_terminated_size = 0;
|
||||
U64 pre_read_mem_gen = ctrl_mem_gen();
|
||||
B32 pre_run_state = ins_atomic_u64_eval(&ctrl_state->ctrl_thread_run_state);
|
||||
if(range_size != 0)
|
||||
if(pre_read_mem_gen == gen && range_size != 0)
|
||||
{
|
||||
// rjf: set up arena
|
||||
U64 page_size = os_get_system_info()->page_size; // TODO(rjf): @page_size_from_process
|
||||
@@ -6099,10 +6099,13 @@ ctrl_memory_artifact_create(String8 key, B32 *cancel_signal, B32 *retry_out)
|
||||
{
|
||||
hash = c_submit_data(content_key, &range_arena, str8((U8 *)range_base, zero_terminated_size));
|
||||
}
|
||||
else if(range_arena != 0)
|
||||
else
|
||||
{
|
||||
arena_release(range_arena);
|
||||
if(pre_read_mem_gen != post_read_mem_gen && range_size != 0)
|
||||
if(range_arena != 0)
|
||||
{
|
||||
arena_release(range_arena);
|
||||
}
|
||||
if((pre_read_mem_gen != gen || pre_read_mem_gen != post_read_mem_gen) && range_size != 0)
|
||||
{
|
||||
retry_out[0] = 1;
|
||||
}
|
||||
@@ -6365,7 +6368,7 @@ ctrl_process_write(CTRL_Handle process, Rng1U64 range, void *src)
|
||||
//~ rjf: Call Stack Artifact Cache Hooks / Lookups
|
||||
|
||||
internal AC_Artifact
|
||||
ctrl_call_stack_artifact_create(String8 key, B32 *cancel_signal, B32 *retry_out)
|
||||
ctrl_call_stack_artifact_create(String8 key, U64 gen, B32 *cancel_signal, B32 *retry_out)
|
||||
{
|
||||
AC_Artifact artifact = {0};
|
||||
{
|
||||
@@ -6561,7 +6564,7 @@ ctrl_call_stack_from_thread(Access *access, CTRL_Handle thread_handle, B32 high_
|
||||
//~ rjf: Call Stack Tree Artifact Cache Hooks / Lookups
|
||||
|
||||
internal AC_Artifact
|
||||
ctrl_call_stack_tree_artifact_create(String8 key, B32 *cancel_signal, B32 *retry_out)
|
||||
ctrl_call_stack_tree_artifact_create(String8 key, U64 gen, B32 *cancel_signal, B32 *retry_out)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
Access *access = access_open();
|
||||
|
||||
@@ -1002,7 +1002,7 @@ internal void ctrl_thread__single_step(DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg);
|
||||
////////////////////////////////
|
||||
//~ rjf: Process Memory Artifact Cache Hooks / Lookups
|
||||
|
||||
internal AC_Artifact ctrl_memory_artifact_create(String8 key, B32 *cancel_signal, B32 *retry_out);
|
||||
internal AC_Artifact ctrl_memory_artifact_create(String8 key, U64 gen, B32 *cancel_signal, B32 *retry_out);
|
||||
internal void ctrl_memory_artifact_destroy(AC_Artifact artifact);
|
||||
internal C_Key ctrl_key_from_process_vaddr_range(CTRL_Handle process, Rng1U64 vaddr_range, B32 zero_terminated, B32 wait_for_fresh, U64 endt_us, B32 *out_is_stale);
|
||||
|
||||
@@ -1017,14 +1017,14 @@ internal B32 ctrl_process_write(CTRL_Handle process, Rng1U64 range, void *src);
|
||||
////////////////////////////////
|
||||
//~ rjf: Call Stack Artifact Cache Hooks / Lookups
|
||||
|
||||
internal AC_Artifact ctrl_call_stack_artifact_create(String8 key, B32 *cancel_signal, B32 *retry_out);
|
||||
internal AC_Artifact ctrl_call_stack_artifact_create(String8 key, U64 gen, B32 *cancel_signal, B32 *retry_out);
|
||||
internal void ctrl_call_stack_artifact_destroy(AC_Artifact artifact);
|
||||
internal CTRL_CallStack ctrl_call_stack_from_thread(Access *access, CTRL_Handle thread_handle, B32 high_priority, U64 endt_us);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Call Stack Tree Artifact Cache Hooks / Lookups
|
||||
|
||||
internal AC_Artifact ctrl_call_stack_tree_artifact_create(String8 key, B32 *cancel_signal, B32 *retry_out);
|
||||
internal AC_Artifact ctrl_call_stack_tree_artifact_create(String8 key, U64 gen, B32 *cancel_signal, B32 *retry_out);
|
||||
internal void ctrl_call_stack_tree_artifact_destroy(AC_Artifact artifact);
|
||||
internal CTRL_CallStackTree ctrl_call_stack_tree(Access *access, U64 endt_us);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user