mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 05:48:40 +00: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 zero_terminated_size = 0;
|
||||||
U64 pre_read_mem_gen = ctrl_mem_gen();
|
U64 pre_read_mem_gen = ctrl_mem_gen();
|
||||||
B32 pre_run_state = ins_atomic_u64_eval(&ctrl_state->ctrl_thread_run_state);
|
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
|
// rjf: set up arena
|
||||||
U64 page_size = os_get_system_info()->page_size; // TODO(rjf): @page_size_from_process
|
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));
|
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(!u128_match(u128_zero(), hash))
|
||||||
{
|
{
|
||||||
if(ctrl_state->wakeup_hook != 0)
|
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
|
//- rjf: bundle content key as artifact
|
||||||
StaticAssert(sizeof(content_key) == sizeof(artifact), artifact_key_size_check);
|
StaticAssert(sizeof(content_key) == sizeof(artifact), artifact_key_size_check);
|
||||||
MemoryCopyStruct(&artifact, &content_key);
|
MemoryCopyStruct(&artifact, &content_key);
|
||||||
|
|||||||
Reference in New Issue
Block a user