blob: 86e2106a5e311f8dd7b0c25f2dcf5ee56ffdc189 [file] [log] [blame]
/*
* Copyright (c) 2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <ztest.h>
/*macro definition*/
#ifdef CONFIG_RISCV32
#define STACK_SIZE 512
#else
#define STACK_SIZE (256 + CONFIG_TEST_EXTRA_STACKSIZE)
#endif
/*local variables*/
static K_THREAD_STACK_DEFINE(tstack, STACK_SIZE);
__kernel static struct k_thread tdata;
static void customdata_entry(void *p1, void *p2, void *p3)
{
u32_t data = 1;
zassert_is_null(k_thread_custom_data_get(), NULL);
while (1) {
k_thread_custom_data_set((void *)data);
/* relinguish cpu for a while */
k_sleep(50);
/** TESTPOINT: custom data comparison */
zassert_equal(data, (u32_t)k_thread_custom_data_get(), NULL);
data++;
}
}
/* test cases */
/**
* @ingroup t_customdata_api
* @brief test thread custom data get/set from coop thread
*/
void test_customdata_get_set_coop(void)
{
k_tid_t tid = k_thread_create(&tdata, tstack, STACK_SIZE,
customdata_entry, NULL, NULL, NULL,
K_PRIO_COOP(1), 0, 0);
k_sleep(500);
/* cleanup environment */
k_thread_abort(tid);
}
/**
* @ingroup t_customdata_api
* @brief test thread custom data get/set from preempt thread
*/
void test_customdata_get_set_preempt(void)
{
/** TESTPOINT: custom data of preempt thread */
k_tid_t tid = k_thread_create(&tdata, tstack, STACK_SIZE,
customdata_entry, NULL, NULL, NULL,
K_PRIO_PREEMPT(0), K_USER, 0);
k_sleep(500);
/* cleanup environment */
k_thread_abort(tid);
}
/*test case main entry*/
void test_main(void)
{
k_thread_access_grant(k_current_get(), &tdata, tstack, NULL);
ztest_test_suite(test_customdata_api,
ztest_unit_test(test_customdata_get_set_coop),
ztest_user_unit_test(test_customdata_get_set_preempt));
ztest_run_test_suite(test_customdata_api);
}