59 lines
1.2 KiB
C
59 lines
1.2 KiB
C
// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
|
/*
|
|
* Copyright 2014 IBM Corp
|
|
*/
|
|
|
|
#include <pool.h>
|
|
|
|
#include "../pool.c"
|
|
|
|
#define POOL_OBJ_COUNT 10
|
|
#define POOL_RESERVED_COUNT 2
|
|
#define POOL_NORMAL_COUNT (POOL_OBJ_COUNT - POOL_RESERVED_COUNT)
|
|
|
|
struct test_object
|
|
{
|
|
int a;
|
|
int b;
|
|
int c;
|
|
};
|
|
|
|
int main(void)
|
|
{
|
|
int i, count = 0;
|
|
struct pool pool;
|
|
struct test_object *a[POOL_OBJ_COUNT];
|
|
|
|
assert(!pool_init(&pool, sizeof(struct test_object), POOL_OBJ_COUNT,
|
|
POOL_RESERVED_COUNT));
|
|
|
|
a[0] = pool_get(&pool, POOL_NORMAL);
|
|
assert(a[0]);
|
|
pool_free_object(&pool, a[0]);
|
|
|
|
for(i = 0; i < POOL_NORMAL_COUNT; i++)
|
|
{
|
|
a[i] = pool_get(&pool, POOL_NORMAL);
|
|
if (a[i])
|
|
count++;
|
|
}
|
|
assert(count == POOL_NORMAL_COUNT);
|
|
|
|
/* Normal pool should be exhausted */
|
|
assert(!pool_get(&pool, POOL_NORMAL));
|
|
|
|
/* Reserved pool should still be available */
|
|
a[POOL_NORMAL_COUNT] = pool_get(&pool, POOL_HIGH);
|
|
assert(a[POOL_NORMAL_COUNT]);
|
|
a[POOL_NORMAL_COUNT + 1] = pool_get(&pool, POOL_HIGH);
|
|
assert(a[POOL_NORMAL_COUNT + 1]);
|
|
|
|
pool_free_object(&pool, a[3]);
|
|
|
|
/* Should be a free object to get now */
|
|
a[3] = pool_get(&pool, POOL_HIGH);
|
|
assert(a[3]);
|
|
|
|
/* This exits depending on whether all tests passed */
|
|
return 0;
|
|
}
|