#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);
}