struct freelist_element *freelist_pop( struct freelist_state *fs, struct freelist_element **fe );
struct freelist_state *fs
- A freelist state as allocated by freelist_new.
struct freelist_element **fe
- A pointer to a freelist element pointer which will be set to point to a struct freelist popped from the freelist. Set to NULL if the freelist is empty.
Returns a pointer to the freelist element (e.g. the value *fe is set to). If the freelist is empty, the return value is NULL and *freelist_element is set to NULL. In this case, the user can call, the caller can call freelist_guaranteed_pop, which will allocate a new element, rather than popping from the freelist. Remember however that the freelist can never shrink, so any such call will permanently increase the size of the freelist by one element.
Popping returns to the user a freelist element. To obtain the user data void pointer from the element, use freelist_get_user_data_from_element.