mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-12 12:31:25 -07:00
extend file streaming cache to support range-based file stream queries; begin plugging in file stream queries as alternative to ctrl stream queries; further bugfixes & unification in eval system
This commit is contained in:
@@ -3905,6 +3905,48 @@ df_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range)
|
||||
return result;
|
||||
}
|
||||
|
||||
internal Rng1U64
|
||||
df_range_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
E_Eval value_eval = e_value_eval_from_eval(eval);
|
||||
DF_CfgNode *size_cfg = df_cfg_node_child_from_string(cfg, str8_lit("size"), 0);
|
||||
String8 size_expr = df_string_from_cfg_node_children(scratch.arena, size_cfg);
|
||||
E_Eval size_eval = e_eval_from_string(scratch.arena, size_expr);
|
||||
E_Eval size_value_eval = e_value_eval_from_eval(size_eval);
|
||||
Rng1U64 result = {0};
|
||||
result.min = value_eval.value.u64;
|
||||
result.max = max_U64;
|
||||
if(size_eval.msgs.max_kind == E_MsgKind_Null)
|
||||
{
|
||||
result.max = result.min + size_value_eval.value.u64;
|
||||
}
|
||||
scratch_end(scratch);
|
||||
return result;
|
||||
}
|
||||
|
||||
internal U128
|
||||
df_key_from_eval_space_range(E_Space space, Rng1U64 range)
|
||||
{
|
||||
U128 result = {0};
|
||||
DF_Entity *entity = df_entity_from_eval_space(space);
|
||||
switch(entity->kind)
|
||||
{
|
||||
//- rjf: nil space -> filesystem key encoded inside of `space`
|
||||
case DF_EntityKind_Nil:
|
||||
{
|
||||
result = space;
|
||||
}break;
|
||||
|
||||
//- rjf: process space -> query
|
||||
case DF_EntityKind_Process:
|
||||
{
|
||||
result = ctrl_hash_store_key_from_process_vaddr_range(entity->ctrl_machine_id, entity->ctrl_handle, range, 0);
|
||||
}break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
internal E_Eval
|
||||
df_eval_from_eval_cfg_table(Arena *arena, E_Eval eval, DF_CfgTable *cfg)
|
||||
{
|
||||
|
||||
@@ -1577,6 +1577,8 @@ internal DF_Entity *df_entity_from_eval_space(E_Space space);
|
||||
internal E_Space df_eval_space_from_entity(DF_Entity *entity);
|
||||
internal B32 df_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range);
|
||||
internal B32 df_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range);
|
||||
internal Rng1U64 df_range_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg);
|
||||
internal U128 df_key_from_eval_space_range(E_Space space, Rng1U64 range);
|
||||
internal E_Eval df_eval_from_eval_cfg_table(Arena *arena, E_Eval eval, DF_CfgTable *cfg);
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user