From 8a1dd578a7c91c944b012c13b920ec6a7ca9a4c7 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Sun, 13 Oct 2024 20:14:59 -0700 Subject: [PATCH] sketch out ptr graph building data structures --- src/ptr_graph_cache/ptr_graph_cache.c | 10 ++++- src/ptr_graph_cache/ptr_graph_cache.h | 59 ++++++++++++++++++++++++--- 2 files changed, 61 insertions(+), 8 deletions(-) diff --git a/src/ptr_graph_cache/ptr_graph_cache.c b/src/ptr_graph_cache/ptr_graph_cache.c index 2ce3e7f8..0e811d47 100644 --- a/src/ptr_graph_cache/ptr_graph_cache.c +++ b/src/ptr_graph_cache/ptr_graph_cache.c @@ -191,6 +191,13 @@ ptg_builder_thread__entry_point(void *p) } } + //- rjf: do task + if(got_task) + { + + } + + //- rjf: commit results to cache if(got_task) OS_MutexScopeW(stripe->rw_mutex) { @@ -255,8 +262,7 @@ ptg_evictor_thread__entry_point(void *p) n->is_working == 0) { DLLRemove(slot->first, slot->last, n); - arena_clear(n->node_arena); - arena_clear(n->link_arena); + arena_clear(n->arena); SLLStackPush(stripe->free_node, n); } } diff --git a/src/ptr_graph_cache/ptr_graph_cache.h b/src/ptr_graph_cache/ptr_graph_cache.h index 9068e76b..ff707462 100644 --- a/src/ptr_graph_cache/ptr_graph_cache.h +++ b/src/ptr_graph_cache/ptr_graph_cache.h @@ -31,13 +31,61 @@ struct PTG_Link U32 to; }; +typedef struct PTG_NodeChunkNode PTG_NodeChunkNode; +struct PTG_NodeChunkNode +{ + PTG_NodeChunkNode *next; + PTG_Node *v; + U64 count; + U64 cap; +}; + +typedef struct PTG_NodeChunkList PTG_NodeChunkList; +struct PTG_NodeChunkList +{ + PTG_NodeChunkNode *first; + PTG_NodeChunkNode *last; + U64 chunk_count; + U64 total_count; +}; + +typedef struct PTG_NodeArray PTG_NodeArray; +struct PTG_NodeArray +{ + PTG_Node *v; + U64 count; +}; + +typedef struct PTG_LinkChunkNode PTG_LinkChunkNode; +struct PTG_LinkChunkNode +{ + PTG_LinkChunkNode *next; + PTG_Link *v; + U64 count; + U64 cap; +}; + +typedef struct PTG_LinkChunkList PTG_LinkChunkList; +struct PTG_LinkChunkList +{ + PTG_LinkChunkNode *first; + PTG_LinkChunkNode *last; + U64 chunk_count; + U64 total_count; +}; + +typedef struct PTG_LinkArray PTG_LinkArray; +struct PTG_LinkArray +{ + PTG_Link *v; + U64 count; +}; + typedef struct PTG_Graph PTG_Graph; struct PTG_Graph { - PTG_Node *nodes; - U64 nodes_count; - PTG_Link *links; - U64 links_count; + PTG_NodeArray nodes; + PTG_LinkArray links; }; typedef struct PTG_GraphNode PTG_GraphNode; @@ -58,8 +106,7 @@ struct PTG_GraphNode B32 is_working; // rjf: content - Arena *node_arena; - Arena *link_arena; + Arena *arena; PTG_Graph graph; };