rt 0.19.1

A real-time operating system capable of full preemption
Documentation
#include <rt/pool.h>

void *rt_pool_get(struct rt_pool *pool)
{
    rt_mutex_lock(&pool->mutex);
    while (pool->avail == 0)
    {
        rt_cond_wait(&pool->cond, &pool->mutex);
    }
    void *p = pool->ptrs[--pool->avail];
    rt_mutex_unlock(&pool->mutex);
    return p;
}

void rt_pool_put(struct rt_pool *pool, void *p)
{
    rt_mutex_lock(&pool->mutex);
    pool->ptrs[pool->avail++] = p;
    rt_mutex_unlock(&pool->mutex);
    rt_cond_signal(&pool->cond);
}