diff options
author | Nicholas Noll <nbnoll@eml.cc> | 2021-12-05 15:17:44 -0800 |
---|---|---|
committer | Nicholas Noll <nbnoll@eml.cc> | 2021-12-05 15:17:44 -0800 |
commit | b48327d357e0818d1a6ae2a064cfa7d1567e1242 (patch) | |
tree | 4677f228a9846937a7ec71c72a1ab63ab69d68ab /src/base/mem/pool.h | |
parent | c200dd832789afa298ba45e0b9efdec96c0e92cc (diff) |
feat(huge): huge refactor (in progress).
Commented out libc includes to uncover all explicit dependencies.
A large fraction has now been ported over (no testing).
I did not port over the command line tools, such as the rc shell.
These will be done independently - as of now I just want the library to
stand independent.
Compilation currently fails due to the lack of math functions.
Diffstat (limited to 'src/base/mem/pool.h')
-rw-r--r-- | src/base/mem/pool.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/base/mem/pool.h b/src/base/mem/pool.h new file mode 100644 index 0000000..d5e9952 --- /dev/null +++ b/src/base/mem/pool.h @@ -0,0 +1,66 @@ +#pragma once + +typedef struct Head Head; +typedef struct Tail Tail; +typedef struct Free Free; +typedef struct Used Used; +typedef struct Core Core; + +struct Head +{ + ulong magic; + ulong size; +}; + +struct Tail +{ + ulong magic0; + uchar datasize[2]; + ulong magic1; + ulong size; +}; + +struct Free +{ + Head; + Free *left, *right; + Free *next, *prev; +}; + +struct Used +{ + Head; +}; + +struct Core +{ + Head; + Core *up, *down; + ulong len, pad; +}; + +struct mem·Pool +{ + char *name; + ulong maxsize; + + void *heap; + mem·Allocator mem; + + ulong cursize; + ulong curfree; + ulong curused; + + ulong mincore; /* smallest size of new core */ + ulong quantum; /* allocated hunks should be multiple of */ + ulong minhunk; /* smallest newly allocated hunk */ + + Free *free; + Core *core; + + int flags; + int nfree; + int lastcompact; + + void* private; +}; |