diff --git a/samples/microkernel/test/test_task/src/task.c b/samples/microkernel/test/test_task/src/task.c index 175f8a31e91..c460a782ce4 100644 --- a/samples/microkernel/test/test_task/src/task.c +++ b/samples/microkernel/test/test_task/src/task.c @@ -70,6 +70,16 @@ static int helperData; static volatile int mainTaskNotReady = 0; +#ifdef TEST_PRIV_TASKS +/* Note this is in reverse order of what is defined under + * test_task/prj.mdef. This is due to compiler filling linker + * section like a stack. This is to preserve the same order + * in memory as test_task. + */ +DEFINE_TASK(RT_TASKID, 10, RegressionTask, 2048, EXE); +DEFINE_TASK(HT_TASKID, 20, HelperTask, 2048, EXE); +#endif + /** * * @brief ISR handler to call isr_task_id_get() and isr_task_priority_get() diff --git a/samples/microkernel/test/test_task_priv/Makefile b/samples/microkernel/test/test_task_priv/Makefile new file mode 100644 index 00000000000..1142e02d87b --- /dev/null +++ b/samples/microkernel/test/test_task_priv/Makefile @@ -0,0 +1,9 @@ +MDEF_FILE = prj.mdef +KERNEL_TYPE = micro +PLATFORM_CONFIG ?= basic_atom +CONF_FILE = prj_$(ARCH).conf + +# Enable testing for private microkernel task objects +CFLAGS = -DTEST_PRIV_TASKS + +include ${ZEPHYR_BASE}/Makefile.inc diff --git a/samples/microkernel/test/test_task_priv/README.txt b/samples/microkernel/test/test_task_priv/README.txt new file mode 100644 index 00000000000..f0eaa7a10ea --- /dev/null +++ b/samples/microkernel/test/test_task_priv/README.txt @@ -0,0 +1,46 @@ +Title: test_task_priv + +Description: + +This test verifies that the microkernel task APIs operate as expected. This +also verifies the mechanism to define private task objects and their usage. + +-------------------------------------------------------------------------------- + +Building and Running Project: + +This microkernel project outputs to the console. It can be built and executed +on QEMU as follows: + + make qemu + +-------------------------------------------------------------------------------- + +Troubleshooting: + +Problems caused by out-dated project information can be addressed by +issuing one of the following commands then rebuilding the project: + + make clean # discard results of previous builds + # but keep existing configuration info +or + make pristine # discard results of previous builds + # and restore pre-defined configuration info + +-------------------------------------------------------------------------------- + +Sample Output: + +tc_start() - Test Microkernel Task API +=================================================================== +Microkernel objects initialized +Testing isr_task_id_get() and isr_task_priority_get() +Testing task_id_get() and task_priority_get() +Testing task_priority_set() +Testing task_sleep() +Testing task_yield() +Testing task_suspend() and task_resume() +=================================================================== +PASS - RegressionTask. +=================================================================== +PROJECT EXECUTION SUCCESSFUL diff --git a/samples/microkernel/test/test_task_priv/prj.mdef b/samples/microkernel/test/test_task_priv/prj.mdef new file mode 100644 index 00000000000..0e504f5131c --- /dev/null +++ b/samples/microkernel/test/test_task_priv/prj.mdef @@ -0,0 +1,17 @@ +% Application : test microkernel task APIs + +% Please keep this in-sync with ../test_task/prj.mdef +% except those specified below + +% TASK HT_TASKID and RT_TASKID are defined within +% the source file, so keep them commented out. +% +% TASK NAME PRIO ENTRY STACK GROUPS +% ================================================== +% TASK HT_TASKID 20 HelperTask 2048 [EXE] +% TASK RT_TASKID 10 RegressionTask 2048 [EXE] + +% SEMA NAME +% =========== + SEMA HT_SEM + SEMA RT_SEM diff --git a/samples/microkernel/test/test_task_priv/prj_arm.conf b/samples/microkernel/test/test_task_priv/prj_arm.conf new file mode 100644 index 00000000000..30cd537e9ef --- /dev/null +++ b/samples/microkernel/test/test_task_priv/prj_arm.conf @@ -0,0 +1,2 @@ +CONFIG_NUM_TASK_PRIORITIES=32 +CONFIG_NUM_IRQS=2 diff --git a/samples/microkernel/test/test_task_priv/prj_x86.conf b/samples/microkernel/test/test_task_priv/prj_x86.conf new file mode 100644 index 00000000000..f4d8b45a24b --- /dev/null +++ b/samples/microkernel/test/test_task_priv/prj_x86.conf @@ -0,0 +1,7 @@ +CONFIG_NUM_TASK_PRIORITIES=32 + +# Let stack canaries use non-random number generator. +# This option is NOT to be used in production code. +CONFIG_DRV_RANDOM=y +CONFIG_TEST_RANDOM_GENERATOR=y +CONFIG_NUM_DYNAMIC_STUBS=2 diff --git a/samples/microkernel/test/test_task_priv/src/Makefile b/samples/microkernel/test/test_task_priv/src/Makefile new file mode 100644 index 00000000000..794dcab9d22 --- /dev/null +++ b/samples/microkernel/test/test_task_priv/src/Makefile @@ -0,0 +1,3 @@ +ccflags-y += ${PROJECTINCLUDE} -I${srctree}/samples/include + +obj-y = task.o diff --git a/samples/microkernel/test/test_task_priv/src/task.c b/samples/microkernel/test/test_task_priv/src/task.c new file mode 100644 index 00000000000..3c4845a96a9 --- /dev/null +++ b/samples/microkernel/test/test_task_priv/src/task.c @@ -0,0 +1 @@ +#include "../../test_task/src/task.c" diff --git a/samples/microkernel/test/test_task_priv/testcase.ini b/samples/microkernel/test/test_task_priv/testcase.ini new file mode 100644 index 00000000000..2e4e8851815 --- /dev/null +++ b/samples/microkernel/test/test_task_priv/testcase.ini @@ -0,0 +1,3 @@ +[test] +tags = core + diff --git a/scripts/sanity_chk/regression_chk.data b/scripts/sanity_chk/regression_chk.data index 194bf99cbec..ed3dc27f23f 100644 --- a/scripts/sanity_chk/regression_chk.data +++ b/scripts/sanity_chk/regression_chk.data @@ -51,6 +51,7 @@ microkernel/test/test_sema_priv basic_cortex_m3! fsl_frdm_k64f microkernel/test/test_sprintf basic_cortex_m3! fsl_frdm_k64f microkernel/test/test_stackprot basic_cortex_m3! fsl_frdm_k64f microkernel/test/test_task basic_cortex_m3! fsl_frdm_k64f +microkernel/test/test_task_priv basic_cortex_m3! fsl_frdm_k64f microkernel/test/test_task_irq basic_cortex_m3! fsl_frdm_k64f microkernel/test/test_timer basic_cortex_m3! fsl_frdm_k64f microkernel/test/test_xip basic_cortex_m3! fsl_frdm_k64f @@ -74,6 +75,7 @@ microkernel/test/test_sprintf basic_minuteia! basic_atom! galileo microkernel/test/test_stackprot basic_minuteia! basic_atom! galileo microkernel/test/test_static_idt basic_minuteia! basic_atom! galileo microkernel/test/test_task basic_minuteia! basic_atom! galileo +microkernel/test/test_task_priv basic_minuteia! basic_atom! galileo microkernel/test/test_task_irq basic_minuteia! basic_atom! galileo microkernel/test/test_tickless basic_minuteia! basic_atom! galileo microkernel/test/test_timer basic_minuteia! basic_atom! galileo