xref: /rockchip-linux_mpp/osal/test/mpp_mem_pool_test.c (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /* SPDX-License-Identifier: Apache-2.0 OR MIT */
2 /*
3  * Copyright (c) 2015 Rockchip Electronics Co., Ltd.
4  */
5 
6 #define MODULE_TAG "mpp_mem_pool_test"
7 
8 #include <stdlib.h>
9 
10 #include "mpp_log.h"
11 #include "mpp_mem_pool.h"
12 
13 #define MPP_MEM_POOL_TEST_SIZE      1024
14 #define MPP_MEM_POOL_TEST_COUNT     20
15 
main()16 int main()
17 {
18     MppMemPool pool = NULL;
19     size_t size = MPP_MEM_POOL_TEST_SIZE;
20     void *p [MPP_MEM_POOL_TEST_COUNT];
21     rk_u32 i;
22 
23     mpp_log("mpp_mem_pool_test start\n");
24 
25     pool = mpp_mem_pool_init_f(MODULE_TAG, size);
26     if (NULL == pool) {
27         mpp_err("mpp_mem_pool_test mpp_mem_pool_init failed\n");
28         goto mpp_mem_pool_test_failed;
29     }
30 
31     for (i = 0; i < MPP_MEM_POOL_TEST_COUNT; i++) {
32         p[i] = mpp_mem_pool_get_f(pool);
33         if (!p[i]) {
34             mpp_err("mpp_mem_pool_test mpp_mem_pool_get_f failed\n");
35             goto mpp_mem_pool_test_failed;
36         }
37     }
38 
39     for (i = 0; i < MPP_MEM_POOL_TEST_COUNT / 2; i++) {
40         if (p[i]) {
41             mpp_mem_pool_put_f(pool, p[i]);
42             p[i] = NULL;
43         }
44     }
45 
46     for (i = 0; i < MPP_MEM_POOL_TEST_COUNT / 4; i++) {
47         p[i] = mpp_mem_pool_get_f(pool);
48         if (!p[i]) {
49             mpp_err("mpp_mem_pool_test mpp_mem_pool_get_f failed\n");
50             goto mpp_mem_pool_test_failed;
51         }
52     }
53 
54     for (i = 0; i < MPP_MEM_POOL_TEST_COUNT; i++) {
55         if (p[i]) {
56             mpp_mem_pool_put_f(pool, p[i]);
57             p[i] = NULL;
58         }
59     }
60 
61     mpp_log("mpp_mem_pool_test success\n");
62     return MPP_OK;
63 
64 mpp_mem_pool_test_failed:
65     mpp_log("mpp_mem_pool_test failed\n");
66     return MPP_NOK;
67 }
68 
69