2 * SPDX-License-Identifier: MIT
4 * Copyright (c) 2018 EfficiOS Inc. and Linux Foundation
5 * Copyright (c) 2018 Philippe Proulx <pproulx@efficios.com>
8 #define BT_LOG_TAG "CTF-WRITER/OBJECT-POOL"
13 #include "common/assert.h"
15 #include "object-pool.h"
18 int bt_ctf_object_pool_initialize(struct bt_ctf_object_pool
*pool
,
19 bt_ctf_object_pool_new_object_func new_object_func
,
20 bt_ctf_object_pool_destroy_object_func destroy_object_func
,
25 BT_ASSERT_DBG(new_object_func
);
26 BT_ASSERT_DBG(destroy_object_func
);
27 BT_LOGD("Initializing object pool: addr=%p, data-addr=%p",
29 pool
->objects
= g_ptr_array_new();
31 BT_LOGE_STR("Failed to allocate a GPtrArray.");
35 pool
->funcs
.new_object
= new_object_func
;
36 pool
->funcs
.destroy_object
= destroy_object_func
;
39 BT_LOGD("Initialized object pool.");
44 bt_ctf_object_pool_finalize(pool
);
54 void bt_ctf_object_pool_finalize(struct bt_ctf_object_pool
*pool
)
59 BT_LOGD("Finalizing object pool.");
62 for (i
= 0; i
< pool
->size
; i
++) {
63 void *obj
= pool
->objects
->pdata
[i
];
66 pool
->funcs
.destroy_object(obj
, pool
->data
);
70 g_ptr_array_free(pool
->objects
, TRUE
);