+ * The pool module provides the boilerplate code to create a set of objects
+ * of the same type.
+ * It provides an interface similar to the heap module, with pool_alloc() and
+ * pool_free() functions that allocate and free an element respectively.
+ * In contrast with the heap module, you can specify exactly the number of
+ * items that you want to be in the pool.
+ *
+ * Items in the pool must be a derived class of <tt>Node *</tt>, which also
+ * means that they can be used as-is with list containers, eg. MsgPort.
+ *
+ * Example code:
+ * \code
+ * typedef struct MyType
+ * {
+ * Node *n;
+ * uint16_t *buf;
+ * // other members here...
+ * } MyType;
+ *
+ * DECLARE_POOL(mypool, MyType, POOL_SIZE);
+ *
+ * static void elem_init(MyType *e)
+ * {
+ * e->buf = NULL;
+ * // other initializations here
+ * }
+ *
+ * int main(void)
+ * {
+ * pool_init(&mypool, elem_init);
+ *
+ * MyType *foo = pool_alloc(&mypool);
+ * // do stuff with foo
+ * pool_free(&mypool, foo);
+ * }
+ * \endcode
+ *