/* * Copyright (c) 2021 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ #include void dummy_fn(struct k_timer *timer) { ARG_UNUSED(timer); } K_TIMER_DEFINE(timer_s, dummy_fn, NULL); K_MEM_SLAB_DEFINE(slab_s, 8, 2, 8); K_SEM_DEFINE(sem_s, 0, 1); K_MUTEX_DEFINE(mutex_s); K_STACK_DEFINE(stack_s, 64); K_MSGQ_DEFINE(msgq_s, sizeof(int), 2, 4); K_MBOX_DEFINE(mbox_s); K_PIPE_DEFINE(pipe_s, 64, 4); K_QUEUE_DEFINE(queue_s); K_EVENT_DEFINE(event_s); unsigned char __aligned(4) pipe_buffer[64]; char __aligned(4) slab_buffer[8 * 4]; stack_data_t stack_array[8 * 4]; int msgq_buffer[64]; ZTEST(obj_tracking, test_obj_tracking_sanity) { struct k_timer timer; struct k_mem_slab slab; struct k_sem sem; struct k_mutex mutex; struct k_stack stack; struct k_msgq msgq; struct k_mbox mbox; struct k_pipe pipe; struct k_queue queue; struct k_event event; void *list; int count; k_timer_init(&timer, dummy_fn, NULL); count = 0; list = _track_list_k_timer; while (list != NULL) { if (list == &timer || list == &timer_s) { count++; } list = SYS_PORT_TRACK_NEXT((struct k_timer *)list); } zassert_equal(count, 2, "Wrong number of timer objects"); k_mem_slab_init(&slab, slab_buffer, 8, 4); count = 0; list = _track_list_k_mem_slab; while (list != NULL) { if (list == &slab || list == &slab_s) { count++; } list = SYS_PORT_TRACK_NEXT((struct k_mem_slab *)list); } zassert_equal(count, 2, "Wrong number of mem_slab objects"); k_sem_init(&sem, 1, 2); count = 0; list = _track_list_k_sem; while (list != NULL) { if (list == &sem || list == &sem_s) { count++; } list = SYS_PORT_TRACK_NEXT((struct k_sem *)list); } zassert_equal(count, 2, "Wrong number of semaphore objects"); k_mutex_init(&mutex); count = 0; list = _track_list_k_mutex; while (list != NULL) { if (list == &mutex || list == &mutex_s) { count++; } list = SYS_PORT_TRACK_NEXT((struct k_mutex *)list); } zassert_equal(count, 2, "Wrong number of mutex objects"); k_stack_init(&stack, stack_array, 20); count = 0; list = _track_list_k_stack; while (list != NULL) { if (list == &stack || list == &stack_s) { count++; } list = SYS_PORT_TRACK_NEXT((struct k_stack *)list); } zassert_equal(count, 2, "Wrong number of stack objects"); k_msgq_init(&msgq, (char *)msgq_buffer, sizeof(int), 8); count = 0; list = _track_list_k_msgq; while (list != NULL) { if (list == &msgq || list == &msgq_s) { count++; } list = SYS_PORT_TRACK_NEXT((struct k_msgq *)list); } zassert_equal(count, 2, "Wrong number of message queue objects"); k_mbox_init(&mbox); count = 0; list = _track_list_k_mbox; while (list != NULL) { if (list == &mbox || list == &mbox_s) { count++; } list = SYS_PORT_TRACK_NEXT((struct k_mbox *)list); } zassert_equal(count, 2, "Wrong number of mbox objects"); k_pipe_init(&pipe, pipe_buffer, sizeof(pipe_buffer)); count = 0; list = _track_list_k_pipe; while (list != NULL) { if (list == &pipe || list == &pipe_s) { count++; } list = SYS_PORT_TRACK_NEXT((struct k_pipe *)list); } zassert_equal(count, 2, "Wrong number of pipe objects"); k_queue_init(&queue); count = 0; list = _track_list_k_queue; while (list != NULL) { if (list == &queue || list == &queue_s) { count++; } list = SYS_PORT_TRACK_NEXT((struct k_queue *)list); } zassert_equal(count, 2, "Wrong number of queue objects"); k_event_init(&event); count = 0; list = _track_list_k_event; while (list != NULL) { if (list == &event || list == &event_s) { count++; } list = SYS_PORT_TRACK_NEXT((struct k_event *)list); } zassert_equal(count, 2, "Wrong number of queue objects"); } ZTEST_SUITE(obj_tracking, NULL, NULL, NULL, NULL, NULL);