mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-13 07:32:23 -07:00
revert last change - that will forever-retry those reads! need a slightly different retry mechanism
This commit is contained in:
+14
-13
@@ -6007,7 +6007,7 @@ ctrl_memory_artifact_create(String8 key, U64 gen, B32 *cancel_signal, B32 *retry
|
||||
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(pre_read_mem_gen == gen && range_size != 0)
|
||||
if(range_size != 0)
|
||||
{
|
||||
// rjf: set up arena
|
||||
U64 page_size = os_get_system_info()->page_size; // TODO(rjf): @page_size_from_process
|
||||
@@ -6099,19 +6099,8 @@ ctrl_memory_artifact_create(String8 key, U64 gen, B32 *cancel_signal, B32 *retry
|
||||
{
|
||||
hash = c_submit_data(content_key, &range_arena, str8((U8 *)range_base, zero_terminated_size));
|
||||
}
|
||||
else
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
//- rjf: wakeup on new reads
|
||||
//- rjf: wakeup on new submissions
|
||||
if(!u128_match(u128_zero(), hash))
|
||||
{
|
||||
if(ctrl_state->wakeup_hook != 0)
|
||||
@@ -6120,6 +6109,18 @@ ctrl_memory_artifact_create(String8 key, U64 gen, B32 *cancel_signal, B32 *retry
|
||||
}
|
||||
}
|
||||
|
||||
//- rjf: always release leftover arenas
|
||||
if(range_arena != 0)
|
||||
{
|
||||
arena_release(range_arena);
|
||||
}
|
||||
|
||||
//- rjf: retry on mem gen "tearing", and if the range is non-empty
|
||||
if(pre_read_mem_gen != post_read_mem_gen && range_size != 0)
|
||||
{
|
||||
retry_out[0] = 1;
|
||||
}
|
||||
|
||||
//- rjf: bundle content key as artifact
|
||||
StaticAssert(sizeof(content_key) == sizeof(artifact), artifact_key_size_check);
|
||||
MemoryCopyStruct(&artifact, &content_key);
|
||||
|
||||
Reference in New Issue
Block a user