@@ -1,4 +1,34 @@ #ifndef KImem #define KImem +#include + +typedef enum kmkind { + kmkind_none, + kmkind_heap, + kmkind_pool, + kmkind_ref, + kmkind_tree +} kmkind; + +typedef enum kmshred { + kmshred_yes, + kmshred_no +} kmshred; + +typedef struct kmcell { + kmkind kind; + sz size; + kmshred shred; + sz refs; + struct kmcell* src; + char data[]; +} kmcell; + +typedef struct kmptr { + kmkind kind; + kmshred shred; + void* ref; + kmcell* cell; +} kmptr; #endif