For your inspection: small id pool
[akaros.git] / kern / include / smallidpool.h
1 /* Copyright (c) 2015 Google Inc.
2  *
3  * Trivial ID pool for small sets of things (< 64K)
4  * implemented as a stack.
5  */
6
7 #define MAXAMT 65535
8
9 // Element 0 is top of stack pointer. It  initially points to 1.
10 // You therefore can not get ID 0. The max id you can get is 65534,
11 // due to the use of uint16_t for the stack elements. That covers just
12 // about everything we've ever needed.
13 // The check array is used instead of a bitfield because these architectures
14 // suck at those.
15 struct idpool {
16         unit16_t *ids;
17         unit8_t *check;
18         int size;
19 };