mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-09-24 02:00:05 +00:00
bucket artifact cache requests by wideness/priority; do high/wide, high/thin, low/wide, low/thin
This commit is contained in:
@@ -213,13 +213,13 @@ access_touch(Access *access, AccessPt *pt, CondVar cv)
|
||||
//- rjf: access points
|
||||
|
||||
internal B32
|
||||
access_pt_is_expired(AccessPt *pt)
|
||||
access_pt_is_expired_(AccessPt *pt, AccessPtExpireParams *params)
|
||||
{
|
||||
U64 access_refcount = ins_atomic_u64_eval(&pt->access_refcount);
|
||||
U64 last_time_touched_us = ins_atomic_u64_eval(&pt->last_time_touched_us);
|
||||
U64 last_update_idx_touched = ins_atomic_u64_eval(&pt->last_update_idx_touched);
|
||||
B32 result = (access_refcount == 0 &&
|
||||
last_time_touched_us + 2000000 < os_now_microseconds() &&
|
||||
last_update_idx_touched + 10 < update_tick_idx());
|
||||
last_time_touched_us + params->time < os_now_microseconds() &&
|
||||
last_update_idx_touched + params->update_idxs < update_tick_idx());
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -27,6 +27,13 @@ struct AccessPt
|
||||
U64 last_update_idx_touched;
|
||||
};
|
||||
|
||||
typedef struct AccessPtExpireParams AccessPtExpireParams;
|
||||
struct AccessPtExpireParams
|
||||
{
|
||||
U64 time;
|
||||
U64 update_idxs;
|
||||
};
|
||||
|
||||
typedef struct Touch Touch;
|
||||
struct Touch
|
||||
{
|
||||
@@ -112,7 +119,8 @@ internal void access_close(Access *access);
|
||||
internal void access_touch(Access *access, AccessPt *pt, CondVar cv);
|
||||
|
||||
//- rjf: access points
|
||||
internal B32 access_pt_is_expired(AccessPt *pt);
|
||||
internal B32 access_pt_is_expired_(AccessPt *pt, AccessPtExpireParams *params);
|
||||
#define access_pt_is_expired(pt, ...) access_pt_is_expired_((pt), &(AccessPtExpireParams){.time = 2000000, .update_idxs = 10, __VA_ARGS__})
|
||||
|
||||
//- rjf: progress counters
|
||||
#define set_progress_ptr(ptr) (tctx_selected()->progress_counter_ptr = (ptr))
|
||||
|
||||
Reference in New Issue
Block a user