From 7c24a01979545c753f4ca58abdcba58e6a3095a7 Mon Sep 17 00:00:00 2001 From: Sherman Date: Wed, 1 Sep 2021 10:13:00 +0800 Subject: [utestcase] 添加 message queue 测试用例 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/utest/configs/kernel/ipc.conf | 2 + examples/utest/testcases/kernel/Kconfig | 4 + examples/utest/testcases/kernel/SConscript | 3 + examples/utest/testcases/kernel/messagequeue_tc.c | 192 ++++++++++++++++++++++ 4 files changed, 201 insertions(+) create mode 100644 examples/utest/testcases/kernel/messagequeue_tc.c (limited to 'examples') diff --git a/examples/utest/configs/kernel/ipc.conf b/examples/utest/configs/kernel/ipc.conf index ac70437df6..543ebf9e4c 100644 --- a/examples/utest/configs/kernel/ipc.conf +++ b/examples/utest/configs/kernel/ipc.conf @@ -1,5 +1,7 @@ CONFIG_UTEST_SEMAPHORE_TC=y CONFIG_UTEST_EVENT_TC=y +CONFIG_UTEST_MESSAGEQUEUE_TC=y # dependencies CONFIG_RT_USING_SEMAPHORE=y CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MESSAGEQUEUE=y diff --git a/examples/utest/testcases/kernel/Kconfig b/examples/utest/testcases/kernel/Kconfig index 1854721193..0145d81373 100644 --- a/examples/utest/testcases/kernel/Kconfig +++ b/examples/utest/testcases/kernel/Kconfig @@ -23,4 +23,8 @@ config UTEST_TIMER_TC bool "timer test" default n +config UTEST_MESSAGEQUEUE_TC + bool "message queue test" + default n + endmenu diff --git a/examples/utest/testcases/kernel/SConscript b/examples/utest/testcases/kernel/SConscript index 758dea4d3f..6192bea3b0 100644 --- a/examples/utest/testcases/kernel/SConscript +++ b/examples/utest/testcases/kernel/SConscript @@ -20,6 +20,9 @@ if GetDepend(['UTEST_EVENT_TC']): if GetDepend(['UTEST_TIMER_TC']): src += ['timer_tc.c'] +if GetDepend(['UTEST_MESSAGEQUEUE_TC']): + src += ['messagequeue_tc.c'] + CPPPATH = [cwd] group = DefineGroup('utestcases', src, depend = [], CPPPATH = CPPPATH) diff --git a/examples/utest/testcases/kernel/messagequeue_tc.c b/examples/utest/testcases/kernel/messagequeue_tc.c new file mode 100644 index 0000000000..335c591ab6 --- /dev/null +++ b/examples/utest/testcases/kernel/messagequeue_tc.c @@ -0,0 +1,192 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-28 Sherman the first version + */ + +#include +#include "utest.h" + +#define MSG_SIZE 4 +#define MAX_MSGS 5 + +static struct rt_messagequeue static_mq; +static rt_uint8_t mq_buf[(MSG_SIZE + 4) * MAX_MSGS]; + +static struct rt_thread mq_send_thread; +static struct rt_thread mq_recv_thread; +static rt_uint8_t mq_send_stack[512]; +static rt_uint8_t mq_recv_stack[512]; + +static struct rt_event finish_e; +#define MQSEND_FINISH 0x01 +#define MQRECV_FINIHS 0x02 + +#ifdef RT_USING_HEAP +static rt_mq_t dynamic_mq; +#endif /* RT_USING_HEAP */ + +static void test_mq_init(void) +{ + rt_err_t ret; + ret = rt_mq_init(&static_mq,"testmq1", mq_buf, MSG_SIZE, sizeof(mq_buf), RT_IPC_FLAG_FIFO); + uassert_true(ret == RT_EOK); +} + +static void test_mq_create(void) +{ +#ifdef RT_USING_HEAP + dynamic_mq = rt_mq_create("testmq2", MSG_SIZE, MAX_MSGS, RT_IPC_FLAG_FIFO); + uassert_true(dynamic_mq != RT_NULL); +#endif /* RT_USING_HEAP */ +} + +static void mq_send_case(rt_mq_t testmq) +{ + rt_uint32_t send_buf[MAX_MSGS+1] = {0}; + rt_err_t ret = RT_EOK; + + for (int var = 0; var < MAX_MSGS; ++var) + { + send_buf[var] = var + 1; + ret = rt_mq_send_wait(testmq, &send_buf[var], sizeof(send_buf[0]), RT_WAITING_FOREVER); + uassert_true(ret == RT_EOK); + } + send_buf[MAX_MSGS] = MAX_MSGS + 1; + ret = rt_mq_send(testmq, &send_buf[MAX_MSGS], sizeof(send_buf[0])); + uassert_true(ret == -RT_EFULL); + + ret = rt_mq_send_wait(testmq, &send_buf[MAX_MSGS], sizeof(send_buf[0]), RT_WAITING_FOREVER); + uassert_true(ret == RT_EOK); + + while (testmq->entry != 0) + { + rt_thread_delay(100); + } + + ret = rt_mq_send(testmq, &send_buf[1], sizeof(send_buf[0])); + uassert_true(ret == RT_EOK); + + ret = rt_mq_send(testmq, &send_buf[2], sizeof(send_buf[0])); + uassert_true(ret == RT_EOK); + + ret = rt_mq_urgent(testmq, &send_buf[0], sizeof(send_buf[0])); + uassert_true(ret == RT_EOK); + + while (testmq->entry != 0) + { + rt_thread_delay(100); + } + + ret = rt_mq_send(testmq, &send_buf[1], sizeof(send_buf[0])); + uassert_true(ret == RT_EOK); + ret = rt_mq_control(testmq, RT_IPC_CMD_RESET, RT_NULL); + uassert_true(ret == RT_EOK); + uassert_true(testmq->entry == 0); +} + +static void mq_send_entry(void *param) +{ + mq_send_case(&static_mq); + +#ifdef RT_USING_HEAP + if(dynamic_mq != RT_NULL) + { + mq_send_case(dynamic_mq); + } +#endif /* RT_USING_HEAP */ + + rt_event_send(&finish_e, MQSEND_FINISH); +} + +static void mq_recv_case(rt_mq_t testmq) +{ + rt_uint32_t recv_buf[MAX_MSGS+1] = {0}; + rt_err_t ret = RT_EOK; + + for (int var = 0; var < MAX_MSGS + 1; ++var) + { + ret = rt_mq_recv(testmq, &recv_buf[var], sizeof(recv_buf[0]), RT_WAITING_FOREVER); + uassert_true(ret == RT_EOK); + uassert_true(recv_buf[var] == (var + 1)); + } + + for (int var = 0; var < 3; ++var) + { + ret = rt_mq_recv(testmq, &recv_buf[var], sizeof(recv_buf[0]), RT_WAITING_FOREVER); + uassert_true(ret == RT_EOK); + uassert_true(recv_buf[var] == (var + 1)); + } +} + +static void mq_recv_entry(void *param) +{ + mq_recv_case(&static_mq); + +#ifdef RT_USING_HEAP + if(dynamic_mq != RT_NULL) + { + mq_recv_case(dynamic_mq); + } +#endif /* RT_USING_HEAP */ + rt_event_send(&finish_e, MQRECV_FINIHS); +} + +static void test_mq_testcase(void) +{ + rt_thread_startup(&mq_send_thread); + rt_thread_startup(&mq_recv_thread); + + rt_event_recv(&finish_e, MQSEND_FINISH | MQRECV_FINIHS, RT_EVENT_FLAG_AND, RT_WAITING_FOREVER, RT_NULL); +} + +static void test_mq_detach(void) +{ + rt_err_t ret = rt_mq_detach(&static_mq); + uassert_true(ret == RT_EOK); +} + +static void test_mq_delete(void) +{ +#ifdef RT_USING_HEAP + rt_err_t ret = rt_mq_delete(dynamic_mq); + uassert_true(ret == RT_EOK); +#endif /* RT_USING_HEAP */ +} + +static rt_err_t utest_tc_init(void) +{ + rt_err_t ret ; + ret = rt_thread_init(&mq_send_thread, "mq_send", mq_send_entry, RT_NULL, mq_send_stack, sizeof(mq_send_stack), 22, 20); + if(ret != RT_EOK) + return -RT_ERROR; + + ret = rt_thread_init(&mq_recv_thread, "mq_recv", mq_recv_entry, RT_NULL, mq_recv_stack, sizeof(mq_recv_stack), 23, 20); + if(ret != RT_EOK) + return -RT_ERROR; + + ret = rt_event_init(&finish_e, "finish", RT_IPC_FLAG_FIFO); + if(ret != RT_EOK) + return -RT_ERROR; + + return RT_EOK; +} + +static rt_err_t utest_tc_cleanup(void) +{ + return RT_EOK; +} + +static void testcase(void) +{ + UTEST_UNIT_RUN(test_mq_init); + UTEST_UNIT_RUN(test_mq_create); + UTEST_UNIT_RUN(test_mq_testcase); + UTEST_UNIT_RUN(test_mq_detach); + UTEST_UNIT_RUN(test_mq_delete); +} +UTEST_TC_EXPORT(testcase, "testcases.kernel.messagequeue_tc", utest_tc_init, utest_tc_cleanup, 1000); -- cgit v1.3.1 From 389077897e76ba9772860d4e1d9d18f1a1f39606 Mon Sep 17 00:00:00 2001 From: guozhanxin Date: Sat, 4 Sep 2021 18:04:37 +0800 Subject: [add] signal testcases --- examples/utest/configs/kernel/ipc.conf | 2 + examples/utest/testcases/kernel/Kconfig | 4 + examples/utest/testcases/kernel/SConscript | 3 + examples/utest/testcases/kernel/signal_tc.c | 199 ++++++++++++++++++++++++++++ 4 files changed, 208 insertions(+) create mode 100644 examples/utest/testcases/kernel/signal_tc.c (limited to 'examples') diff --git a/examples/utest/configs/kernel/ipc.conf b/examples/utest/configs/kernel/ipc.conf index 543ebf9e4c..f8e687e633 100644 --- a/examples/utest/configs/kernel/ipc.conf +++ b/examples/utest/configs/kernel/ipc.conf @@ -1,7 +1,9 @@ CONFIG_UTEST_SEMAPHORE_TC=y CONFIG_UTEST_EVENT_TC=y CONFIG_UTEST_MESSAGEQUEUE_TC=y +CONFIG_UTEST_SIGNAL_TC=y # dependencies CONFIG_RT_USING_SEMAPHORE=y CONFIG_RT_USING_EVENT=y CONFIG_RT_USING_MESSAGEQUEUE=y +CONFIG_RT_USING_SIGNALS=y diff --git a/examples/utest/testcases/kernel/Kconfig b/examples/utest/testcases/kernel/Kconfig index 0145d81373..f4673aebb9 100644 --- a/examples/utest/testcases/kernel/Kconfig +++ b/examples/utest/testcases/kernel/Kconfig @@ -27,4 +27,8 @@ config UTEST_MESSAGEQUEUE_TC bool "message queue test" default n +config UTEST_SIGNAL_TC + bool "signal test" + default n + endmenu diff --git a/examples/utest/testcases/kernel/SConscript b/examples/utest/testcases/kernel/SConscript index 6192bea3b0..ca34db6fed 100644 --- a/examples/utest/testcases/kernel/SConscript +++ b/examples/utest/testcases/kernel/SConscript @@ -23,6 +23,9 @@ if GetDepend(['UTEST_TIMER_TC']): if GetDepend(['UTEST_MESSAGEQUEUE_TC']): src += ['messagequeue_tc.c'] +if GetDepend(['UTEST_SIGNAL_TC']): + src += ['signal_tc.c'] + CPPPATH = [cwd] group = DefineGroup('utestcases', src, depend = [], CPPPATH = CPPPATH) diff --git a/examples/utest/testcases/kernel/signal_tc.c b/examples/utest/testcases/kernel/signal_tc.c new file mode 100644 index 0000000000..40c08f7402 --- /dev/null +++ b/examples/utest/testcases/kernel/signal_tc.c @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-12 flybreak the first version + * + * case 1:rt_signal_install, install all available signal + * case 2:rt_signal_install, install illegal signal + * case 3:rt_signal_mask/unmask, one thread self, install and unmask, then kill, should received. + * case 4:rt_signal_mask/unmask, one thread self, install and unmask and mask, then kill, should can't received. + * case 5:rt_signal_wait, two thread, thread1: install and unmask, then wait 1s; thread2: kill, should received. + * case 6:rt_signal_wait, two thread, thread1: install and unmask, then wait 1s; thread2: sleep 2s then kill, should can't received. + * case 7:rt_signal_kill, kill legal thread, return 0; + * case 8:rt_signal_kill, kill illegal thread, return failed (unused); + * case 9:rt_signal_kill, kill illegal signo, return -RT_EINVAL; + * + */ + +#include +#include "utest.h" + +int recive_sig = 0; + +void sig_handle_default(int signo) +{ + recive_sig = signo; +} + +static void rt_signal_install_test(void) +{ + int signo; + rt_sighandler_t result; + + /* case 1:rt_signal_install, install all available signal. */ + for (signo = 0; signo < RT_SIG_MAX; signo++) + { + result = rt_signal_install(signo, sig_handle_default); + uassert_true(result != SIG_ERR); + } + /* case 2:rt_signal_install, install illegal signal. */ + result = rt_signal_install(signo, sig_handle_default); + uassert_true(result == SIG_ERR); + + return; +} + +static void rt_signal_mask_test(void) +{ + int signo; + rt_sighandler_t result; + + /* case 3:rt_signal_mask/unmask, one thread self, install and unmask, then kill, should received. */ + for (signo = 0; signo < RT_SIG_MAX; signo++) + { + recive_sig = -1; + result = rt_signal_install(signo, sig_handle_default); + uassert_true(result != SIG_ERR); + rt_signal_unmask(signo); + uassert_int_equal(rt_thread_kill(rt_thread_self(), signo), RT_EOK); + rt_thread_mdelay(1); + uassert_int_equal(recive_sig, signo); + } + + return; +} + +static void rt_signal_unmask_test(void) +{ + int signo; + rt_sighandler_t result; + + /* case 4:rt_signal_mask/unmask, one thread self, install and unmask and mask, then kill, should can't received. */ + for (signo = 0; signo < RT_SIG_MAX; signo++) + { + recive_sig = -1; + result = rt_signal_install(signo, sig_handle_default); + uassert_true(result != SIG_ERR); + rt_signal_unmask(signo); + rt_signal_mask(signo); + uassert_int_equal(rt_thread_kill(rt_thread_self(), signo), RT_EOK); + rt_thread_mdelay(1); + uassert_int_not_equal(recive_sig, signo); + } + + return; +} + +static void rt_signal_kill_test(void) +{ + int signo; + rt_sighandler_t result; + + /* case 7:rt_signal_kill, kill legal thread, return 0; */ + for (signo = 0; signo < RT_SIG_MAX; signo++) + { + recive_sig = -1; + result = rt_signal_install(signo, sig_handle_default); + uassert_true(result != SIG_ERR); + rt_signal_unmask(signo); + uassert_int_equal(rt_thread_kill(rt_thread_self(), signo), RT_EOK); + rt_thread_mdelay(1); + uassert_int_equal(recive_sig, signo); + } + /* case 8:rt_signal_kill, kill illegal thread, return failed; */ +// uassert_true(rt_thread_kill((rt_thread_t)-1, signo) == -RT_ERROR); + + /* case 9:rt_signal_kill, kill illegal signo, return -RT_EINVAL; */ + uassert_true(rt_thread_kill(rt_thread_self(), -1) == -RT_EINVAL); + + return; +} + +void rt_signal_wait_thread(void *parm) +{ + sigset_t selectset; + siginfo_t recive_si; + + rt_signal_install(SIGUSR1, sig_handle_default); + rt_signal_unmask(SIGUSR1); + + sigemptyset(&selectset); + sigaddset(&selectset, SIGUSR1); + + /* case 5:rt_signal_wait, two thread, thread1: install and unmask, then wait 1s; thread2: kill, should received. */ + if (rt_signal_wait(&selectset, &recive_si, RT_TICK_PER_SECOND) != RT_EOK) + { + return; + } + + recive_sig = recive_si.si_signo; +} + +static void rt_signal_wait_test(void) +{ + rt_thread_t t1; + + recive_sig = -1; + t1 = rt_thread_create("sig_t1", rt_signal_wait_thread, 0, 4096, 14, 10); + if (t1) + { + rt_thread_startup(t1); + } + + rt_thread_mdelay(1); + /* case 5:rt_signal_wait, two thread, thread1: install and unmask, then wait 1s; thread2: kill, should received. */ + uassert_int_equal(rt_thread_kill(t1, SIGUSR1), RT_EOK); + rt_thread_mdelay(1); + uassert_int_equal(recive_sig, SIGUSR1); + + return; +} + +static void rt_signal_wait_test2(void) +{ + rt_thread_t t1; + + recive_sig = -1; + t1 = rt_thread_create("sig_t1", rt_signal_wait_thread, 0, 4096, 14, 10); + if (t1) + { + rt_thread_startup(t1); + } + + /* case 6:rt_signal_wait, two thread, thread1: install and unmask, then wait 1s; thread2: sleep 2s then kill, should can't received. */ + rt_thread_mdelay(2000); + uassert_int_equal(rt_thread_kill(t1, SIGUSR1), RT_EOK); + rt_thread_mdelay(1); + uassert_int_not_equal(recive_sig, SIGUSR1); + + return; +} + +static rt_err_t utest_tc_init(void) +{ + return RT_EOK; +} + +static rt_err_t utest_tc_cleanup(void) +{ + return RT_EOK; +} + +static void testcase(void) +{ +#ifdef RT_USING_HEAP + UTEST_UNIT_RUN(rt_signal_install_test); + UTEST_UNIT_RUN(rt_signal_mask_test); + UTEST_UNIT_RUN(rt_signal_unmask_test); + UTEST_UNIT_RUN(rt_signal_kill_test); + UTEST_UNIT_RUN(rt_signal_wait_test); + UTEST_UNIT_RUN(rt_signal_wait_test2); +#endif /* RT_USING_HEAP */ +} +UTEST_TC_EXPORT(testcase, "testcases.kernel.signal_tc", utest_tc_init, utest_tc_cleanup, 1000); + +/*********************** end of file ****************************/ -- cgit v1.3.1 From e18d44940f966b1c132bf242786c62e2b6e57b7a Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sun, 5 Sep 2021 01:50:58 -0400 Subject: [finsh] 修复由于移除finsh导致__cmd_xxx命令无法使用的问题 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/at91sam9260/platform/interrupt.c | 4 +--- bsp/at91sam9260/platform/reset.c | 5 ++--- bsp/at91sam9g45/platform/interrupt.c | 4 +--- bsp/at91sam9g45/platform/reset.c | 6 ++---- bsp/beaglebone/applications/board.c | 3 +-- bsp/dm365/drivers/davinci_emac.c | 2 +- bsp/dm365/platform/interrupt.c | 3 +-- bsp/dm365/platform/reset.c | 6 ++---- bsp/fm33lc026/libraries/HAL_Drivers/drv_common.c | 2 +- bsp/hk32/hk32f030c8-mini/board/board.c | 2 +- bsp/mb9bf506r/drivers/nand.c | 2 +- bsp/nuvoton/libraries/n9h30/rtt_port/drv_sys.c | 6 ++---- bsp/nuvoton/libraries/nuc980/rtt_port/drv_sys.c | 7 +++---- bsp/nv32f100x/board/src/board.c | 11 ++--------- bsp/qemu-vexpress-a9/drivers/audio/drv_ac97.c | 2 +- bsp/qemu-vexpress-a9/drivers/audio/drv_pl041.c | 3 ++- bsp/simulator/drivers/board.c | 2 +- bsp/w60x/drivers/drv_standby.c | 2 +- components/drivers/can/can.c | 3 +-- components/drivers/rtc/alarm.c | 2 +- components/drivers/wlan/wlan_cmd.c | 2 +- components/net/lwip-1.4.1/src/apps/ping/ping.c | 2 +- components/net/lwip-2.0.2/src/apps/ping/ping.c | 2 +- components/net/lwip-2.0.3/src/apps/ping/ping.c | 2 +- components/net/lwip-2.1.2/src/apps/ping/ping.c | 2 +- components/net/netdev/src/netdev.c | 9 ++++----- components/vbus/vbus.c | 2 +- examples/file/readspeed.c | 2 +- examples/file/readwrite.c | 2 +- examples/file/writespeed.c | 2 +- 30 files changed, 41 insertions(+), 63 deletions(-) (limited to 'examples') diff --git a/bsp/at91sam9260/platform/interrupt.c b/bsp/at91sam9260/platform/interrupt.c index 7c40ffbdad..dc98fe7c4d 100644 --- a/bsp/at91sam9260/platform/interrupt.c +++ b/bsp/at91sam9260/platform/interrupt.c @@ -413,7 +413,6 @@ void list_irq(void) } #include -FINSH_FUNCTION_EXPORT(list_irq, list system irq); #ifdef FINSH_USING_MSH int cmd_list_irq(int argc, char** argv) @@ -421,8 +420,7 @@ int cmd_list_irq(int argc, char** argv) list_irq(); return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(cmd_list_irq, __cmd_list_irq, list system irq.); - +MSH_CMD_EXPORT_ALIAS(cmd_list_irq, list_irq, list system irq); #endif #endif #endif diff --git a/bsp/at91sam9260/platform/reset.c b/bsp/at91sam9260/platform/reset.c index 4b5462a9e1..6679ab57fe 100644 --- a/bsp/at91sam9260/platform/reset.c +++ b/bsp/at91sam9260/platform/reset.c @@ -38,15 +38,14 @@ int cmd_reset(int argc, char** argv) rt_hw_cpu_reset(); return 0; } +MSH_CMD_EXPORT_ALIAS(cmd_reset, reset, restart the system); int cmd_shutdown(int argc, char** argv) { rt_hw_cpu_shutdown(); return 0; } - -FINSH_FUNCTION_EXPORT_ALIAS(cmd_reset, __cmd_reset, restart the system.); -FINSH_FUNCTION_EXPORT_ALIAS(cmd_shutdown, __cmd_shutdown, shutdown the system.); +MSH_CMD_EXPORT_ALIAS(cmd_shutdown, shutdown, shutdown the system); #endif #endif diff --git a/bsp/at91sam9g45/platform/interrupt.c b/bsp/at91sam9g45/platform/interrupt.c index c8afc998f1..c3dd99e798 100644 --- a/bsp/at91sam9g45/platform/interrupt.c +++ b/bsp/at91sam9g45/platform/interrupt.c @@ -445,7 +445,6 @@ void list_irq(void) } #include -FINSH_FUNCTION_EXPORT(list_irq, list system irq); #ifdef FINSH_USING_MSH int cmd_list_irq(int argc, char** argv) @@ -453,8 +452,7 @@ int cmd_list_irq(int argc, char** argv) list_irq(); return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(cmd_list_irq, __cmd_list_irq, list system irq.); - +MSH_CMD_EXPORT_ALIAS(cmd_list_irq, list_irq, list system irq); #endif #endif #endif diff --git a/bsp/at91sam9g45/platform/reset.c b/bsp/at91sam9g45/platform/reset.c index 8abbf7a9fb..33d6f97283 100644 --- a/bsp/at91sam9g45/platform/reset.c +++ b/bsp/at91sam9g45/platform/reset.c @@ -30,7 +30,6 @@ void machine_shutdown(void) #ifdef RT_USING_FINSH #include -FINSH_FUNCTION_EXPORT_ALIAS(rt_hw_cpu_reset, reset, restart the system); #ifdef FINSH_USING_MSH int cmd_reset(int argc, char** argv) @@ -38,15 +37,14 @@ int cmd_reset(int argc, char** argv) rt_hw_cpu_reset(); return 0; } +MSH_CMD_EXPORT_ALIAS(cmd_reset, reset, restart the system); int cmd_shutdown(int argc, char** argv) { rt_hw_cpu_shutdown(); return 0; } - -FINSH_FUNCTION_EXPORT_ALIAS(cmd_reset, __cmd_reset, restart the system.); -FINSH_FUNCTION_EXPORT_ALIAS(cmd_shutdown, __cmd_shutdown, shutdown the system.); +MSH_CMD_EXPORT_ALIAS(cmd_shutdown, shutdown, shutdown the system); #endif #endif diff --git a/bsp/beaglebone/applications/board.c b/bsp/beaglebone/applications/board.c index ff25dd7dd7..e1e1f8cae2 100644 --- a/bsp/beaglebone/applications/board.c +++ b/bsp/beaglebone/applications/board.c @@ -163,5 +163,4 @@ void rt_hw_cpu_reset(void) REG32(PRM_DEVICE(prcm_base)) = 0x1; RT_ASSERT(0); } -FINSH_FUNCTION_EXPORT_ALIAS(rt_hw_cpu_reset, reboot, reboot the cpu); -FINSH_FUNCTION_EXPORT_ALIAS(rt_hw_cpu_reset, __cmd_reboot, reboot the cpu); +MSH_CMD_EXPORT_ALIAS(rt_hw_cpu_reset, reboot, reboot the cpu); diff --git a/bsp/dm365/drivers/davinci_emac.c b/bsp/dm365/drivers/davinci_emac.c index 7ad539fb09..b164bf7aaa 100644 --- a/bsp/dm365/drivers/davinci_emac.c +++ b/bsp/dm365/drivers/davinci_emac.c @@ -1751,7 +1751,7 @@ int cmd_dump_emac_stats(int argc, char** argv) dump_emac_stats(); return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(cmd_dump_emac_stats, __cmd_dump_emac_stats, dump emac statistics.); +MSH_CMD_EXPORT_ALIAS(cmd_dump_emac_stats, dump_emac_stats, dump emac statistics); #endif #endif diff --git a/bsp/dm365/platform/interrupt.c b/bsp/dm365/platform/interrupt.c index 6334072bcd..fb0d4d3d3e 100644 --- a/bsp/dm365/platform/interrupt.c +++ b/bsp/dm365/platform/interrupt.c @@ -286,8 +286,7 @@ int cmd_list_irq(int argc, char** argv) list_irq(); return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(cmd_list_irq, __cmd_list_irq, list system irq.); - +MSH_CMD_EXPORT_ALIAS(cmd_list_irq, list_irq, list system irq); #endif #endif #endif diff --git a/bsp/dm365/platform/reset.c b/bsp/dm365/platform/reset.c index dc80fac76e..b706e5a4cc 100644 --- a/bsp/dm365/platform/reset.c +++ b/bsp/dm365/platform/reset.c @@ -39,7 +39,6 @@ void machine_shutdown() #ifdef RT_USING_FINSH #include -FINSH_FUNCTION_EXPORT_ALIAS(rt_hw_cpu_reset, reset, restart the system); #ifdef FINSH_USING_MSH int cmd_reset(int argc, char** argv) @@ -47,15 +46,14 @@ int cmd_reset(int argc, char** argv) rt_hw_cpu_reset(); return 0; } +MSH_CMD_EXPORT_ALIAS(cmd_reset, reset, restart the system); int cmd_shutdown(int argc, char** argv) { rt_hw_cpu_shutdown(); return 0; } - -FINSH_FUNCTION_EXPORT_ALIAS(cmd_reset, __cmd_reset, restart the system.); -FINSH_FUNCTION_EXPORT_ALIAS(cmd_shutdown, __cmd_shutdown, shutdown the system.); +MSH_CMD_EXPORT_ALIAS(cmd_shutdown, shutdown, shutdown the system); #endif #endif diff --git a/bsp/fm33lc026/libraries/HAL_Drivers/drv_common.c b/bsp/fm33lc026/libraries/HAL_Drivers/drv_common.c index 9decb78d6d..27eb76cc84 100644 --- a/bsp/fm33lc026/libraries/HAL_Drivers/drv_common.c +++ b/bsp/fm33lc026/libraries/HAL_Drivers/drv_common.c @@ -22,7 +22,7 @@ static void reboot(uint8_t argc, char **argv) { rt_hw_cpu_reset(); } -FINSH_FUNCTION_EXPORT_ALIAS(reboot, __cmd_reboot, Reboot System); +MSH_CMD_EXPORT(reboot, reboot system); #endif /* RT_USING_FINSH */ /* SysTick configuration */ diff --git a/bsp/hk32/hk32f030c8-mini/board/board.c b/bsp/hk32/hk32f030c8-mini/board/board.c index e659a2f718..8d3aeaf117 100644 --- a/bsp/hk32/hk32f030c8-mini/board/board.c +++ b/bsp/hk32/hk32f030c8-mini/board/board.c @@ -21,7 +21,7 @@ static void reboot(uint8_t argc, char **argv) { rt_hw_cpu_reset(); } -FINSH_FUNCTION_EXPORT_ALIAS(reboot, __cmd_reboot, Reboot System); +MSH_CMD_EXPORT(reboot, reboot system); #endif /* RT_USING_FINSH */ /** System Clock Configuration diff --git a/bsp/mb9bf506r/drivers/nand.c b/bsp/mb9bf506r/drivers/nand.c index fcd8cf42d4..1c03120d14 100644 --- a/bsp/mb9bf506r/drivers/nand.c +++ b/bsp/mb9bf506r/drivers/nand.c @@ -646,7 +646,7 @@ void nand_readoob(int block, int page) } FINSH_FUNCTION_EXPORT_ALIAS(nand_readoob, readoob, read oob[block/page]); -void nand_erase_chip() +void nand_erase_chip(void) { int i; unsigned char id; diff --git a/bsp/nuvoton/libraries/n9h30/rtt_port/drv_sys.c b/bsp/nuvoton/libraries/n9h30/rtt_port/drv_sys.c index 43b0c2cfb8..6bd1e90c6d 100644 --- a/bsp/nuvoton/libraries/n9h30/rtt_port/drv_sys.c +++ b/bsp/nuvoton/libraries/n9h30/rtt_port/drv_sys.c @@ -271,7 +271,6 @@ E_SYS_USB0_ID nu_sys_usb0_role(void) #ifdef RT_USING_FINSH #include -FINSH_FUNCTION_EXPORT_ALIAS(rt_hw_cpu_reset, reset, restart the system); #ifdef FINSH_USING_MSH int cmd_reset(int argc, char **argv) @@ -279,15 +278,14 @@ int cmd_reset(int argc, char **argv) rt_hw_cpu_reset(); return 0; } +MSH_CMD_EXPORT_ALIAS(cmd_reset, reset, restart the system); int cmd_shutdown(int argc, char **argv) { rt_hw_cpu_shutdown(); return 0; } - -FINSH_FUNCTION_EXPORT_ALIAS(cmd_reset, __cmd_reset, restart the system.); -FINSH_FUNCTION_EXPORT_ALIAS(cmd_shutdown, __cmd_shutdown, shutdown the system.); +MSH_CMD_EXPORT_ALIAS(cmd_shutdown, shutdown, shutdown the system); int nu_clocks(int argc, char **argv) { diff --git a/bsp/nuvoton/libraries/nuc980/rtt_port/drv_sys.c b/bsp/nuvoton/libraries/nuc980/rtt_port/drv_sys.c index c19d2dd34a..8d4538576b 100644 --- a/bsp/nuvoton/libraries/nuc980/rtt_port/drv_sys.c +++ b/bsp/nuvoton/libraries/nuc980/rtt_port/drv_sys.c @@ -310,15 +310,14 @@ int cmd_reset(int argc, char **argv) rt_hw_cpu_reset(); return 0; } +MSH_CMD_EXPORT_ALIAS(cmd_reset, reset, restart the system); int cmd_shutdown(int argc, char **argv) { rt_hw_cpu_shutdown(); return 0; } - -FINSH_FUNCTION_EXPORT_ALIAS(cmd_reset, __cmd_reset, restart the system.); -FINSH_FUNCTION_EXPORT_ALIAS(cmd_shutdown, __cmd_shutdown, shutdown the system.); +MSH_CMD_EXPORT_ALIAS(cmd_shutdown, shutdown, shutdown the system); int nu_clocks(int argc, char **argv) { @@ -345,7 +344,7 @@ int nu_clocks(int argc, char **argv) return 0; } -MSH_CMD_EXPORT(nu_clocks, Get all system clocks); +MSH_CMD_EXPORT(nu_clocks, get all system clocks); #endif #ifdef RT_USING_INTERRUPT_INFO diff --git a/bsp/nv32f100x/board/src/board.c b/bsp/nv32f100x/board/src/board.c index 372099a6ba..75da79f9ee 100644 --- a/bsp/nv32f100x/board/src/board.c +++ b/bsp/nv32f100x/board/src/board.c @@ -98,21 +98,14 @@ void rt_hw_board_init() #ifdef RT_USING_HEAP rt_system_heap_init((void*)NV32_SRAM_BEGIN, (void*)NV32_SRAM_END); #endif - - - - } -long cmd_reset(int argc, char** argv) +int cmd_reset(int argc, char** argv) { NVIC_SystemReset(); return 0; } - -FINSH_FUNCTION_EXPORT_ALIAS(cmd_reset, __cmd_reset, Reset Board.); - - +MSH_CMD_EXPORT_ALIAS(cmd_reset, reset, restart the system); /*@}*/ diff --git a/bsp/qemu-vexpress-a9/drivers/audio/drv_ac97.c b/bsp/qemu-vexpress-a9/drivers/audio/drv_ac97.c index cf88ebed5e..d8ab4eda8a 100644 --- a/bsp/qemu-vexpress-a9/drivers/audio/drv_ac97.c +++ b/bsp/qemu-vexpress-a9/drivers/audio/drv_ac97.c @@ -102,6 +102,6 @@ int _ac97_reg_dump(int argc, char **argv) AC97_DUMP(AC97_ADC_SLOT_MAP); return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(_ac97_reg_dump, __cmd_ac97_dump, ac97 dump reg.); +MSH_CMD_EXPORT_ALIAS(_ac97_reg_dump, ac97_dump, ac97 dump reg); #endif diff --git a/bsp/qemu-vexpress-a9/drivers/audio/drv_pl041.c b/bsp/qemu-vexpress-a9/drivers/audio/drv_pl041.c index 3498031d7b..9de431ed9b 100644 --- a/bsp/qemu-vexpress-a9/drivers/audio/drv_pl041.c +++ b/bsp/qemu-vexpress-a9/drivers/audio/drv_pl041.c @@ -391,5 +391,6 @@ int _aaci_pl041_reg_dump(int argc, char **argv) PL041_DUMP(PL041->dr4[0]); return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(_aaci_pl041_reg_dump, __cmd_pl041_dump, aaci pl041 dump reg.); +MSH_CMD_EXPORT_ALIAS(_aaci_pl041_reg_dump, pl041_dump, aaci pl041 dump reg); + #endif diff --git a/bsp/simulator/drivers/board.c b/bsp/simulator/drivers/board.c index 4facdfa1b2..17339d4e1a 100755 --- a/bsp/simulator/drivers/board.c +++ b/bsp/simulator/drivers/board.c @@ -84,7 +84,7 @@ void rt_hw_exit(void) #if defined(RT_USING_FINSH) #include FINSH_FUNCTION_EXPORT_ALIAS(rt_hw_exit, exit, exit rt - thread); -FINSH_FUNCTION_EXPORT_ALIAS(rt_hw_exit, __cmd_quit, exit rt-thread); +MSH_CMD_EXPORT_ALIAS(rt_hw_exit, quit, exit rt-thread); #endif /* RT_USING_FINSH */ /** diff --git a/bsp/w60x/drivers/drv_standby.c b/bsp/w60x/drivers/drv_standby.c index dfe699bf32..8e35f4cca8 100644 --- a/bsp/w60x/drivers/drv_standby.c +++ b/bsp/w60x/drivers/drv_standby.c @@ -97,7 +97,7 @@ static void standby(uint8_t argc, char **argv) sys_start_standby(atoi(argv[1])); } } -FINSH_FUNCTION_EXPORT_ALIAS(standby, __cmd_standby, sleep System); +MSH_CMD_EXPORT(standby, sleep system); #endif /* RT_USING_FINSH */ #endif /* BSP_USING_STANDBY */ diff --git a/components/drivers/can/can.c b/components/drivers/can/can.c index 55444c3a0e..358220013f 100644 --- a/components/drivers/can/can.c +++ b/components/drivers/can/can.c @@ -966,6 +966,5 @@ int cmd_canstat(int argc, void **argv) } return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(cmd_canstat, __cmd_canstat, Stat Can Device Status.); +MSH_CMD_EXPORT_ALIAS(cmd_canstat, canstat, stat can device status); #endif - diff --git a/components/drivers/rtc/alarm.c b/components/drivers/rtc/alarm.c index cd0a976328..2bcc51f2ee 100644 --- a/components/drivers/rtc/alarm.c +++ b/components/drivers/rtc/alarm.c @@ -777,7 +777,7 @@ void rt_alarm_dump(void) rt_kprintf("+----+---------------------+------+------+----+\n"); } -FINSH_FUNCTION_EXPORT_ALIAS(rt_alarm_dump, __cmd_alarm_dump, dump alarm info); +MSH_CMD_EXPORT_ALIAS(rt_alarm_dump, rt_alarm_dump, dump alarm info); /** \brief initialize alarm service system * diff --git a/components/drivers/wlan/wlan_cmd.c b/components/drivers/wlan/wlan_cmd.c index 3b8a119784..52c25f6755 100644 --- a/components/drivers/wlan/wlan_cmd.c +++ b/components/drivers/wlan/wlan_cmd.c @@ -587,7 +587,7 @@ static int wifi_msh(int argc, char *argv[]) } #if defined(RT_USING_FINSH) -FINSH_FUNCTION_EXPORT_ALIAS(wifi_msh, __cmd_wifi, wifi command.); +MSH_CMD_EXPORT_ALIAS(wifi_msh, wifi, wifi command); #endif #endif diff --git a/components/net/lwip-1.4.1/src/apps/ping/ping.c b/components/net/lwip-1.4.1/src/apps/ping/ping.c index 6d3cfe0fc3..6251504f59 100644 --- a/components/net/lwip-1.4.1/src/apps/ping/ping.c +++ b/components/net/lwip-1.4.1/src/apps/ping/ping.c @@ -236,7 +236,7 @@ int cmd_ping(int argc, char **argv) return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(cmd_ping, __cmd_ping, ping network host); +MSH_CMD_EXPORT_ALIAS(cmd_ping, ping, ping network host); #endif /* RT_USING_FINSH */ #endif /* RT_USING_NETDEV */ diff --git a/components/net/lwip-2.0.2/src/apps/ping/ping.c b/components/net/lwip-2.0.2/src/apps/ping/ping.c index 6d3cfe0fc3..6251504f59 100644 --- a/components/net/lwip-2.0.2/src/apps/ping/ping.c +++ b/components/net/lwip-2.0.2/src/apps/ping/ping.c @@ -236,7 +236,7 @@ int cmd_ping(int argc, char **argv) return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(cmd_ping, __cmd_ping, ping network host); +MSH_CMD_EXPORT_ALIAS(cmd_ping, ping, ping network host); #endif /* RT_USING_FINSH */ #endif /* RT_USING_NETDEV */ diff --git a/components/net/lwip-2.0.3/src/apps/ping/ping.c b/components/net/lwip-2.0.3/src/apps/ping/ping.c index 6d3cfe0fc3..6251504f59 100644 --- a/components/net/lwip-2.0.3/src/apps/ping/ping.c +++ b/components/net/lwip-2.0.3/src/apps/ping/ping.c @@ -236,7 +236,7 @@ int cmd_ping(int argc, char **argv) return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(cmd_ping, __cmd_ping, ping network host); +MSH_CMD_EXPORT_ALIAS(cmd_ping, ping, ping network host); #endif /* RT_USING_FINSH */ #endif /* RT_USING_NETDEV */ diff --git a/components/net/lwip-2.1.2/src/apps/ping/ping.c b/components/net/lwip-2.1.2/src/apps/ping/ping.c index 6d3cfe0fc3..6251504f59 100644 --- a/components/net/lwip-2.1.2/src/apps/ping/ping.c +++ b/components/net/lwip-2.1.2/src/apps/ping/ping.c @@ -236,7 +236,7 @@ int cmd_ping(int argc, char **argv) return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(cmd_ping, __cmd_ping, ping network host); +MSH_CMD_EXPORT_ALIAS(cmd_ping, ping, ping network host); #endif /* RT_USING_FINSH */ #endif /* RT_USING_NETDEV */ diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c index f722909cc8..26451cb007 100644 --- a/components/net/netdev/src/netdev.c +++ b/components/net/netdev/src/netdev.c @@ -1047,7 +1047,7 @@ int netdev_ifconfig(int argc, char **argv) return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(netdev_ifconfig, __cmd_ifconfig, list the information of all network interfaces); +MSH_CMD_EXPORT_ALIAS(netdev_ifconfig, ifconfig, list the information of all network interfaces); #endif /* NETDEV_USING_IFCONFIG */ #ifdef NETDEV_USING_PING @@ -1152,7 +1152,7 @@ int netdev_ping(int argc, char **argv) return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(netdev_ping, __cmd_ping, ping network host); +MSH_CMD_EXPORT_ALIAS(netdev_ping, ping, ping network host); #endif /* NETDEV_USING_IFCONFIG */ static void netdev_list_dns(void) @@ -1222,8 +1222,7 @@ int netdev_dns(int argc, char **argv) return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(netdev_dns, __cmd_dns, list and set the information of dns); - +MSH_CMD_EXPORT_ALIAS(netdev_dns, dns, list and set the information of dns); #ifdef NETDEV_USING_NETSTAT static void netdev_cmd_netstat(void) { @@ -1270,7 +1269,7 @@ int netdev_netstat(int argc, char **argv) return 0; } -FINSH_FUNCTION_EXPORT_ALIAS(netdev_netstat, __cmd_netstat, list the information of TCP / IP); +MSH_CMD_EXPORT_ALIAS(netdev_netstat, netstat, list the information of TCP / IP); #endif /* NETDEV_USING_NETSTAT */ #endif /* RT_USING_FINSH */ diff --git a/components/vbus/vbus.c b/components/vbus/vbus.c index 2adaad9449..cb28b33fca 100644 --- a/components/vbus/vbus.c +++ b/components/vbus/vbus.c @@ -1308,7 +1308,7 @@ void rt_vbus_chm_wm_dump(void) #ifdef RT_USING_FINSH #include -FINSH_FUNCTION_EXPORT_ALIAS(rt_vbus_rb_dump, vbrb, dump vbus ringbuffer status); +FINSH_FUNCTION_EXPORT_ALIAS(rt_vbus_rb_dump, vbrb, dump vbus ringbuffer status); FINSH_FUNCTION_EXPORT_ALIAS(rt_vbus_chn_dump, vbchn, dump vbus channel status); FINSH_FUNCTION_EXPORT_ALIAS(rt_vbus_sess_dump, vbses, dump vbus session status); FINSH_FUNCTION_EXPORT_ALIAS(rt_vbus_que_dump, vbque, dump vbus out queue status); diff --git a/examples/file/readspeed.c b/examples/file/readspeed.c index 61b1a8a696..5f4cad3190 100644 --- a/examples/file/readspeed.c +++ b/examples/file/readspeed.c @@ -81,5 +81,5 @@ static void cmd_readspeed(int argc, char *argv[]) } readspeed(filename, block_size); } -FINSH_FUNCTION_EXPORT_ALIAS(cmd_readspeed, __cmd_readspeed, test file system read speed); +MSH_CMD_EXPORT_ALIAS(cmd_readspeed, readspeed, test file system read speed); #endif /* RT_USING_FINSH */ diff --git a/examples/file/readwrite.c b/examples/file/readwrite.c index 9b27da1b01..d1dd5bc038 100644 --- a/examples/file/readwrite.c +++ b/examples/file/readwrite.c @@ -162,5 +162,5 @@ static void cmd_readwrite(int argc, char *argv[]) } readwrite(filename); } -FINSH_FUNCTION_EXPORT_ALIAS(cmd_readwrite, __cmd_readwrite, perform file read and write test); +MSH_CMD_EXPORT_ALIAS(cmd_readwrite, readwrite, perform file read and write test); #endif /* RT_USING_FINSH */ diff --git a/examples/file/writespeed.c b/examples/file/writespeed.c index 8ae6f6e5a8..f76027d28b 100644 --- a/examples/file/writespeed.c +++ b/examples/file/writespeed.c @@ -92,5 +92,5 @@ static void cmd_writespeed(int argc, char *argv[]) } writespeed(filename, length, block_size); } -FINSH_FUNCTION_EXPORT_ALIAS(cmd_writespeed, __cmd_writespeed, test file system write speed); +MSH_CMD_EXPORT_ALIAS(cmd_writespeed, writespeed, test file system write speed); #endif /* RT_USING_FINSH */ -- cgit v1.3.1 From f4abcef96f9dd52a3a2355e37eeee810029f295f Mon Sep 17 00:00:00 2001 From: tyustli <1225613647@qq.com> Date: Mon, 6 Sep 2021 15:30:08 +0800 Subject: [add] utest kernel mutex_tc.c file --- examples/utest/configs/kernel/ipc.conf | 2 + examples/utest/testcases/kernel/Kconfig | 4 + examples/utest/testcases/kernel/SConscript | 3 + examples/utest/testcases/kernel/mutex_tc.c | 676 +++++++++++++++++++++++++++++ 4 files changed, 685 insertions(+) create mode 100644 examples/utest/testcases/kernel/mutex_tc.c (limited to 'examples') diff --git a/examples/utest/configs/kernel/ipc.conf b/examples/utest/configs/kernel/ipc.conf index f8e687e633..f961e082e1 100644 --- a/examples/utest/configs/kernel/ipc.conf +++ b/examples/utest/configs/kernel/ipc.conf @@ -2,8 +2,10 @@ CONFIG_UTEST_SEMAPHORE_TC=y CONFIG_UTEST_EVENT_TC=y CONFIG_UTEST_MESSAGEQUEUE_TC=y CONFIG_UTEST_SIGNAL_TC=y +CONFIG_UTEST_MUTEX_TC=y # dependencies CONFIG_RT_USING_SEMAPHORE=y CONFIG_RT_USING_EVENT=y CONFIG_RT_USING_MESSAGEQUEUE=y CONFIG_RT_USING_SIGNALS=y +CONFIG_RT_USING_MUTEX=y \ No newline at end of file diff --git a/examples/utest/testcases/kernel/Kconfig b/examples/utest/testcases/kernel/Kconfig index f4673aebb9..fd4e1fecb9 100644 --- a/examples/utest/testcases/kernel/Kconfig +++ b/examples/utest/testcases/kernel/Kconfig @@ -31,4 +31,8 @@ config UTEST_SIGNAL_TC bool "signal test" default n +config UTEST_MUTEX_TC + bool "mutex test" + default n + endmenu diff --git a/examples/utest/testcases/kernel/SConscript b/examples/utest/testcases/kernel/SConscript index ca34db6fed..4bf0a2e60b 100644 --- a/examples/utest/testcases/kernel/SConscript +++ b/examples/utest/testcases/kernel/SConscript @@ -26,6 +26,9 @@ if GetDepend(['UTEST_MESSAGEQUEUE_TC']): if GetDepend(['UTEST_SIGNAL_TC']): src += ['signal_tc.c'] +if GetDepend(['UTEST_MUTEX_TC']): + src += ['mutex_tc.c'] + CPPPATH = [cwd] group = DefineGroup('utestcases', src, depend = [], CPPPATH = CPPPATH) diff --git a/examples/utest/testcases/kernel/mutex_tc.c b/examples/utest/testcases/kernel/mutex_tc.c new file mode 100644 index 0000000000..0ec443318a --- /dev/null +++ b/examples/utest/testcases/kernel/mutex_tc.c @@ -0,0 +1,676 @@ +/* + * Copyright (c) 2006-2019, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-09.01 luckyzjq the first version + */ + +#include +#include +#include "utest.h" + +static struct rt_mutex static_mutex; + +#ifdef RT_USING_HEAP +static rt_mutex_t dynamic_mutex; +#endif /* RT_USING_HEAP */ + +/* init test */ +static void test_static_mutex_init(void) +{ + rt_err_t result = -RT_ERROR; + + result = rt_mutex_init(&static_mutex, "static_mutex", RT_IPC_FLAG_PRIO); + if (RT_EOK != result) + { + uassert_true(RT_FALSE); + } + + result = rt_mutex_detach(&static_mutex); + if (RT_EOK != result) + { + uassert_true(RT_FALSE); + } + + result = rt_mutex_init(&static_mutex, "static_mutex", RT_IPC_FLAG_FIFO); + if (RT_EOK != result) + { + uassert_true(RT_FALSE); + } + + result = rt_mutex_detach(&static_mutex); + if (RT_EOK != result) + { + uassert_true(RT_FALSE); + } + + uassert_true(RT_TRUE); +} + +/* static take test */ +static void static_mutex_take_entry(void *param) +{ + rt_err_t result; + rt_mutex_t mutex; + + int rand_num = rand() % 0x1000; + mutex = (rt_mutex_t)param; + + result = rt_mutex_take(mutex, rand_num); + if (RT_EOK == result) + { + uassert_true(RT_FALSE); + } +} +static void test_static_mutex_take(void) +{ + rt_err_t result; + + result = rt_mutex_init(&static_mutex, "static_mutex", RT_IPC_FLAG_PRIO); + if (RT_EOK != result) + { + uassert_true(RT_FALSE); + return; + } + + /* take mutex and not release */ + result = rt_mutex_take(&static_mutex, RT_WAITING_FOREVER); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + rt_thread_t tid = rt_thread_create("mutex_th", + static_mutex_take_entry, + &static_mutex, + 2048, + 10, + 10); + if (RT_NULL == tid) + { + uassert_true(RT_FALSE); + return; + } + + /* startup thread take second */ + rt_thread_startup(tid); + + /* let system schedule */ + rt_thread_mdelay(5); + + result = rt_mutex_detach(&static_mutex); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + uassert_true(RT_TRUE); +} + +/* static release test */ +static void static_mutex_release_entry(void *param) +{ + rt_err_t result; + rt_mutex_t mutex; + + int rand_num = rand() % 0x1000; + mutex = (rt_mutex_t)param; + + result = rt_mutex_take(mutex, rand_num); + if (RT_EOK != result) + { + uassert_true(RT_FALSE); + } +} +static void test_static_mutex_release(void) +{ + rt_err_t result; + + result = rt_mutex_init(&static_mutex, "static_mutex", RT_IPC_FLAG_PRIO); + if (RT_EOK != result) + { + uassert_true(RT_FALSE); + return; + } + + /* take mutex */ + result = rt_mutex_take(&static_mutex, RT_WAITING_FOREVER); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + /* release mutex */ + result = rt_mutex_release(&static_mutex); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + rt_thread_t tid = rt_thread_create("mutex_th", + static_mutex_release_entry, + &static_mutex, + 2048, + 10, + 10); + if (RT_NULL == tid) + { + uassert_true(RT_FALSE); + return; + } + + /* startup thread adn take mutex second */ + rt_thread_startup(tid); + + /* let system schedule */ + rt_thread_mdelay(5); + + result = rt_mutex_detach(&static_mutex); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + uassert_true(RT_TRUE); +} + +/* static trytake test */ +static void static_mutex_trytake_entry(void *param) +{ + rt_err_t result; + rt_mutex_t mutex; + + mutex = (rt_mutex_t)param; + + result = rt_mutex_trytake(mutex); + if (RT_EOK == result) + { + uassert_true(RT_FALSE); + } +} +static void test_static_mutex_trytake(void) +{ + rt_err_t result; + + result = rt_mutex_init(&static_mutex, "static_mutex", RT_IPC_FLAG_PRIO); + if (RT_EOK != result) + { + uassert_true(RT_FALSE); + return; + } + + /* take mutex and not release */ + result = rt_mutex_take(&static_mutex, RT_WAITING_FOREVER); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + rt_thread_t tid = rt_thread_create("mutex_th", + static_mutex_trytake_entry, + &static_mutex, + 2048, + 10, + 10); + if (RT_NULL == tid) + { + uassert_true(RT_FALSE); + return; + } + + /* startup thread and trytake mutex second */ + rt_thread_startup(tid); + + /* let system schedule */ + rt_thread_mdelay(5); + + result = rt_mutex_detach(&static_mutex); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + uassert_true(RT_TRUE); +} + +static rt_thread_t tid1 = RT_NULL; +static rt_thread_t tid2 = RT_NULL; +static rt_thread_t tid3 = RT_NULL; + +/* static mutex priority reverse test */ +static void static_thread1_entry(void *param) +{ + /* let system schedule */ + rt_thread_mdelay(100); + + /* thread3 hode mutex thread2 take mutex */ + /* check thread2 and thread3 priority */ + if (tid2->current_priority != tid3->current_priority) + { + uassert_true(RT_FALSE); + } + else + { + uassert_true(RT_TRUE); + } +} + +static void static_thread2_entry(void *param) +{ + rt_err_t result; + rt_mutex_t mutex = (rt_mutex_t)param; + + /* let system schedule */ + rt_thread_mdelay(50); + + result = rt_mutex_take(mutex, RT_WAITING_FOREVER); + if (result == RT_EOK) + { + rt_mutex_release(mutex); + } +} +static void static_thread3_entry(void *param) +{ + rt_tick_t tick; + rt_err_t result; + rt_mutex_t mutex = (rt_mutex_t)param; + + result = rt_mutex_take(mutex, RT_WAITING_FOREVER); + if (result != RT_EOK) + { + uassert_true(RT_FALSE); + } + + tick = rt_tick_get(); + while (rt_tick_get() - tick < (RT_TICK_PER_SECOND / 2)); + + rt_mutex_release(mutex); +} + +static void test_static_pri_reverse(void) +{ + rt_err_t result; + tid1 = RT_NULL; + tid2 = RT_NULL; + tid3 = RT_NULL; + + result = rt_mutex_init(&static_mutex, "static_mutex", RT_IPC_FLAG_PRIO); + if (RT_EOK != result) + { + uassert_true(RT_FALSE); + return; + } + + /* 创建线程 1 */ + tid1 = rt_thread_create("thread1", + static_thread1_entry, + &static_mutex, + 1024, + 10 - 1, + 10); + if (tid1 != RT_NULL) + rt_thread_startup(tid1); + + /* 创建线程 2 */ + tid2 = rt_thread_create("thread2", + static_thread2_entry, + &static_mutex, + 1024, + 10, + 10); + if (tid2 != RT_NULL) + rt_thread_startup(tid2); + + /* 创建线程 3 */ + tid3 = rt_thread_create("thread3", + static_thread3_entry, + &static_mutex, + 1024, + 10 + 1, + 10); + if (tid3 != RT_NULL) + rt_thread_startup(tid3); + + rt_thread_mdelay(1000); + + result = rt_mutex_detach(&static_mutex); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + uassert_true(RT_TRUE); +} + +/* create test */ +static void test_dynamic_mutex_create(void) +{ + rt_err_t result = -RT_ERROR; + + /* PRIO mode */ + dynamic_mutex = rt_mutex_create("dynamic_mutex", RT_IPC_FLAG_PRIO); + if (RT_NULL == result) + { + uassert_true(RT_FALSE); + } + + result = rt_mutex_delete(dynamic_mutex); + if (RT_EOK != result) + { + uassert_true(RT_FALSE); + } + + /* FIFO mode */ + dynamic_mutex = rt_mutex_create("dynamic_mutex", RT_IPC_FLAG_FIFO); + if (RT_NULL == dynamic_mutex) + { + uassert_true(RT_FALSE); + } + + result = rt_mutex_delete(dynamic_mutex); + if (RT_EOK != result) + { + uassert_true(RT_FALSE); + } + + uassert_true(RT_TRUE); +} + +/* dynamic take test */ +static void dynamic_mutex_take_entry(void *param) +{ + rt_err_t result; + rt_mutex_t mutex; + + int rand_num = rand() % 0x1000; + mutex = (rt_mutex_t)param; + + result = rt_mutex_take(mutex, rand_num); + if (RT_EOK == result) + { + uassert_true(RT_FALSE); + } +} +static void test_dynamic_mutex_take(void) +{ + rt_err_t result; + + dynamic_mutex = rt_mutex_create("dynamic_mutex", RT_IPC_FLAG_PRIO); + if (RT_NULL == dynamic_mutex) + { + uassert_true(RT_FALSE); + return; + } + + /* take mutex and not release */ + result = rt_mutex_take(dynamic_mutex, RT_WAITING_FOREVER); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + rt_thread_t tid = rt_thread_create("mutex_th", + dynamic_mutex_take_entry, + dynamic_mutex, + 2048, + 10, + 10); + if (RT_NULL == tid) + { + uassert_true(RT_FALSE); + return; + } + + /* startup thread take second */ + rt_thread_startup(tid); + + /* let system schedule */ + rt_thread_mdelay(5); + + result = rt_mutex_delete(dynamic_mutex); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + uassert_true(RT_TRUE); +} + +/* dynamic release test */ +static void dynamic_mutex_release_entry(void *param) +{ + rt_err_t result; + rt_mutex_t mutex; + + int rand_num = rand() % 0x1000; + mutex = (rt_mutex_t)param; + + result = rt_mutex_take(mutex, rand_num); + if (RT_EOK != result) + { + uassert_true(RT_FALSE); + } +} +static void test_dynamic_mutex_release(void) +{ + rt_err_t result; + + dynamic_mutex = rt_mutex_create("dynamic_mutex", RT_IPC_FLAG_PRIO); + if (RT_NULL == dynamic_mutex) + { + uassert_true(RT_FALSE); + return; + } + + /* take mutex */ + result = rt_mutex_take(dynamic_mutex, RT_WAITING_FOREVER); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + /* release mutex */ + result = rt_mutex_release(dynamic_mutex); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + rt_thread_t tid = rt_thread_create("mutex_th", + dynamic_mutex_release_entry, + dynamic_mutex, + 2048, + 10, + 10); + if (RT_NULL == tid) + { + uassert_true(RT_FALSE); + return; + } + + /* startup thread adn take mutex second */ + rt_thread_startup(tid); + + /* let system schedule */ + rt_thread_mdelay(5); + + result = rt_mutex_delete(dynamic_mutex); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + uassert_true(RT_TRUE); +} + +/* dynamic trytake test */ +static void dynamic_mutex_trytake_entry(void *param) +{ + rt_err_t result; + rt_mutex_t mutex; + + mutex = (rt_mutex_t)param; + + result = rt_mutex_trytake(mutex); + if (RT_EOK == result) + { + uassert_true(RT_FALSE); + } +} +static void test_dynamic_mutex_trytake(void) +{ + rt_err_t result; + + dynamic_mutex = rt_mutex_create("dynamic_mutex", RT_IPC_FLAG_PRIO); + if (RT_NULL == dynamic_mutex) + { + uassert_true(RT_FALSE); + return; + } + + /* take mutex and not release */ + result = rt_mutex_take(dynamic_mutex, RT_WAITING_FOREVER); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + rt_thread_t tid = rt_thread_create("mutex_th", + dynamic_mutex_trytake_entry, + dynamic_mutex, + 2048, + 10, + 10); + if (RT_NULL == tid) + { + uassert_true(RT_FALSE); + return; + } + + /* startup thread and trytake mutex second */ + rt_thread_startup(tid); + + /* let system schedule */ + rt_thread_mdelay(5); + + result = rt_mutex_delete(dynamic_mutex); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + uassert_true(RT_TRUE); +} + +/* dynamic mutex priority reverse test */ +static void dynamic_thread1_entry(void *param) +{ + /* let system schedule */ + rt_thread_mdelay(100); + + /* thread3 hode mutex thread2 take mutex */ + /* check thread2 and thread3 priority */ + if (tid2->current_priority != tid3->current_priority) + { + uassert_true(RT_FALSE); + } + else + { + uassert_true(RT_TRUE); + } +} + +static void dynamic_thread2_entry(void *param) +{ + rt_err_t result; + rt_mutex_t mutex = (rt_mutex_t)param; + + /* let system schedule */ + rt_thread_mdelay(50); + + result = rt_mutex_take(mutex, RT_WAITING_FOREVER); + if (result == RT_EOK) + { + rt_mutex_release(mutex); + } +} +static void dynamic_thread3_entry(void *param) +{ + rt_tick_t tick; + rt_err_t result; + rt_mutex_t mutex = (rt_mutex_t)param; + + result = rt_mutex_take(mutex, RT_WAITING_FOREVER); + if (result != RT_EOK) + { + uassert_true(RT_FALSE); + } + + tick = rt_tick_get(); + while (rt_tick_get() - tick < (RT_TICK_PER_SECOND / 2)); + + rt_mutex_release(mutex); +} + +static void test_dynamic_pri_reverse(void) +{ + rt_err_t result; + tid1 = RT_NULL; + tid2 = RT_NULL; + tid3 = RT_NULL; + + dynamic_mutex = rt_mutex_create("dynamic_mutex", RT_IPC_FLAG_PRIO); + if (RT_NULL == dynamic_mutex) + { + uassert_true(RT_FALSE); + return; + } + + /* 创建线程 1 */ + tid1 = rt_thread_create("thread1", + dynamic_thread1_entry, + dynamic_mutex, + 1024, + 10 - 1, + 10); + if (tid1 != RT_NULL) + rt_thread_startup(tid1); + + /* 创建线程 2 */ + tid2 = rt_thread_create("thread2", + dynamic_thread2_entry, + dynamic_mutex, + 1024, + 10, + 10); + if (tid2 != RT_NULL) + rt_thread_startup(tid2); + + /* 创建线程 3 */ + tid3 = rt_thread_create("thread3", + dynamic_thread3_entry, + dynamic_mutex, + 1024, + 10 + 1, + 10); + if (tid3 != RT_NULL) + rt_thread_startup(tid3); + + rt_thread_mdelay(1000); + + result = rt_mutex_delete(dynamic_mutex); + if (RT_EOK != result) + uassert_true(RT_FALSE); + + uassert_true(RT_TRUE); +} + +static rt_err_t utest_tc_init(void) +{ +#ifdef RT_USING_HEAP + dynamic_mutex = RT_NULL; +#endif /* RT_USING_HEAP */ + + return RT_EOK; +} + +static rt_err_t utest_tc_cleanup(void) +{ +#ifdef RT_USING_HEAP + dynamic_mutex = RT_NULL; +#endif /* RT_USING_HEAP */ + + return RT_EOK; +} + +static void testcase(void) +{ + UTEST_UNIT_RUN(test_static_mutex_init); + UTEST_UNIT_RUN(test_static_mutex_take); + UTEST_UNIT_RUN(test_static_mutex_release); + UTEST_UNIT_RUN(test_static_mutex_trytake); + UTEST_UNIT_RUN(test_static_pri_reverse); +#ifdef RT_USING_HEAP + UTEST_UNIT_RUN(test_dynamic_mutex_create); + UTEST_UNIT_RUN(test_dynamic_mutex_take); + UTEST_UNIT_RUN(test_dynamic_mutex_release); + UTEST_UNIT_RUN(test_dynamic_mutex_trytake); + UTEST_UNIT_RUN(test_dynamic_pri_reverse); +#endif +} +UTEST_TC_EXPORT(testcase, "testcases.kernel.mutex_tc", utest_tc_init, utest_tc_cleanup, 1000); + +/********************* end of file ************************/ -- cgit v1.3.1 From 0b55a75211d0e75e1c21e1e9150ced1102e245b5 Mon Sep 17 00:00:00 2001 From: tyustli <43946994+tyustli@users.noreply.github.com> Date: Wed, 8 Sep 2021 12:25:16 +0800 Subject: [fix] change chinese comment to english and fix some wrong character --- examples/utest/testcases/kernel/mutex_tc.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'examples') diff --git a/examples/utest/testcases/kernel/mutex_tc.c b/examples/utest/testcases/kernel/mutex_tc.c index 0ec443318a..f50e3e43f7 100644 --- a/examples/utest/testcases/kernel/mutex_tc.c +++ b/examples/utest/testcases/kernel/mutex_tc.c @@ -154,7 +154,7 @@ static void test_static_mutex_release(void) return; } - /* startup thread adn take mutex second */ + /* startup thread and take mutex second */ rt_thread_startup(tid); /* let system schedule */ @@ -290,7 +290,7 @@ static void test_static_pri_reverse(void) return; } - /* 创建线程 1 */ + /* thread1 */ tid1 = rt_thread_create("thread1", static_thread1_entry, &static_mutex, @@ -300,7 +300,7 @@ static void test_static_pri_reverse(void) if (tid1 != RT_NULL) rt_thread_startup(tid1); - /* 创建线程 2 */ + /* thread2 */ tid2 = rt_thread_create("thread2", static_thread2_entry, &static_mutex, @@ -310,7 +310,7 @@ static void test_static_pri_reverse(void) if (tid2 != RT_NULL) rt_thread_startup(tid2); - /* 创建线程 3 */ + /* thread3 */ tid3 = rt_thread_create("thread3", static_thread3_entry, &static_mutex, @@ -467,7 +467,7 @@ static void test_dynamic_mutex_release(void) return; } - /* startup thread adn take mutex second */ + /* startup thread and take mutex second */ rt_thread_startup(tid); /* let system schedule */ @@ -599,7 +599,7 @@ static void test_dynamic_pri_reverse(void) return; } - /* 创建线程 1 */ + /* thread1 */ tid1 = rt_thread_create("thread1", dynamic_thread1_entry, dynamic_mutex, @@ -609,7 +609,7 @@ static void test_dynamic_pri_reverse(void) if (tid1 != RT_NULL) rt_thread_startup(tid1); - /* 创建线程 2 */ + /* thread2 */ tid2 = rt_thread_create("thread2", dynamic_thread2_entry, dynamic_mutex, @@ -619,7 +619,7 @@ static void test_dynamic_pri_reverse(void) if (tid2 != RT_NULL) rt_thread_startup(tid2); - /* 创建线程 3 */ + /* thread3 */ tid3 = rt_thread_create("thread3", dynamic_thread3_entry, dynamic_mutex, -- cgit v1.3.1 From bf94a69afdb8faf004d70f0089da2702dc6c3671 Mon Sep 17 00:00:00 2001 From: liukangcc Date: Thu, 9 Sep 2021 10:15:26 +0800 Subject: [add] mailbox testcase. --- examples/utest/configs/kernel/ipc.conf | 4 +- examples/utest/testcases/kernel/Kconfig | 4 + examples/utest/testcases/kernel/SConscript | 3 + examples/utest/testcases/kernel/mailbox_tc.c | 371 +++++++++++++++++++++++++++ 4 files changed, 381 insertions(+), 1 deletion(-) create mode 100644 examples/utest/testcases/kernel/mailbox_tc.c (limited to 'examples') diff --git a/examples/utest/configs/kernel/ipc.conf b/examples/utest/configs/kernel/ipc.conf index f961e082e1..8af98d607a 100644 --- a/examples/utest/configs/kernel/ipc.conf +++ b/examples/utest/configs/kernel/ipc.conf @@ -3,9 +3,11 @@ CONFIG_UTEST_EVENT_TC=y CONFIG_UTEST_MESSAGEQUEUE_TC=y CONFIG_UTEST_SIGNAL_TC=y CONFIG_UTEST_MUTEX_TC=y +CONFIG_UTEST_MAILBOX_TC=y # dependencies CONFIG_RT_USING_SEMAPHORE=y CONFIG_RT_USING_EVENT=y CONFIG_RT_USING_MESSAGEQUEUE=y CONFIG_RT_USING_SIGNALS=y -CONFIG_RT_USING_MUTEX=y \ No newline at end of file +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_MAILBOX=y diff --git a/examples/utest/testcases/kernel/Kconfig b/examples/utest/testcases/kernel/Kconfig index fd4e1fecb9..fba3b8c511 100644 --- a/examples/utest/testcases/kernel/Kconfig +++ b/examples/utest/testcases/kernel/Kconfig @@ -35,4 +35,8 @@ config UTEST_MUTEX_TC bool "mutex test" default n +config UTEST_MAILBOX_TC + bool "mailbox test" + default n + endmenu diff --git a/examples/utest/testcases/kernel/SConscript b/examples/utest/testcases/kernel/SConscript index 4bf0a2e60b..484f1fbf3b 100644 --- a/examples/utest/testcases/kernel/SConscript +++ b/examples/utest/testcases/kernel/SConscript @@ -29,6 +29,9 @@ if GetDepend(['UTEST_SIGNAL_TC']): if GetDepend(['UTEST_MUTEX_TC']): src += ['mutex_tc.c'] +if GetDepend(['UTEST_MAILBOX_TC']): + src += ['mailbox_tc.c'] + CPPPATH = [cwd] group = DefineGroup('utestcases', src, depend = [], CPPPATH = CPPPATH) diff --git a/examples/utest/testcases/kernel/mailbox_tc.c b/examples/utest/testcases/kernel/mailbox_tc.c new file mode 100644 index 0000000000..e18613b559 --- /dev/null +++ b/examples/utest/testcases/kernel/mailbox_tc.c @@ -0,0 +1,371 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-09-08 liukang the first version + */ + +#include +#include "utest.h" +#include + +static struct rt_mailbox test_static_mb; +static char mb_pool[128]; + +static rt_mailbox_t test_dynamic_mb; + +static uint8_t static_mb_recv_thread_finish, static_mb_send_thread_finish; +static uint8_t dynamic_mb_recv_thread_finish, dynamic_mb_send_thread_finish; + +ALIGN(RT_ALIGN_SIZE) +static char thread1_stack[1024]; +static struct rt_thread thread1; + +ALIGN(RT_ALIGN_SIZE) +static char thread2_stack[1024]; +static struct rt_thread thread2; + +#define THREAD_PRIORITY 9 +#define THREAD_TIMESLICE 5 + +static rt_thread_t mb_send = RT_NULL; +static rt_thread_t mb_recv = RT_NULL; + +static rt_uint8_t mb_send_str1[] = "this is first mail!"; +static rt_uint8_t mb_send_str2[] = "this is second mail!"; +static rt_uint8_t mb_send_str3[] = "this is thirdy mail!"; + +static rt_uint8_t *mb_recv_str1; +static rt_uint8_t *mb_recv_str2; +static rt_uint8_t *mb_recv_str3; + +static void test_mailbox_init(void) +{ + rt_err_t result; + + result = rt_mb_init(&test_static_mb, "mbt", &mb_pool[0], sizeof(mb_pool) / 4, RT_IPC_FLAG_FIFO); + if (result != RT_EOK) + { + uassert_false(1); + } + result = rt_mb_detach(&test_static_mb); + if (result != RT_EOK) + { + uassert_false(1); + } + + result = rt_mb_init(&test_static_mb, "mbt", &mb_pool[0], sizeof(mb_pool) / 4, RT_IPC_FLAG_PRIO); + if (result != RT_EOK) + { + uassert_false(1); + } + + result = rt_mb_detach(&test_static_mb); + if (result != RT_EOK) + { + uassert_false(1); + } + + uassert_true(1); +} + +static void test_mailbox_deatch(void) +{ + rt_err_t result; + + result = rt_mb_init(&test_static_mb, "mbt", &mb_pool[0], sizeof(mb_pool) / 4, RT_IPC_FLAG_FIFO); + if (result != RT_EOK) + { + uassert_false(1); + } + result = rt_mb_detach(&test_static_mb); + if (result != RT_EOK) + { + uassert_false(1); + } + + result = rt_mb_init(&test_static_mb, "mbt", &mb_pool[0], sizeof(mb_pool) / 4, RT_IPC_FLAG_PRIO); + if (result != RT_EOK) + { + uassert_false(1); + } + result = rt_mb_detach(&test_static_mb); + if (result != RT_EOK) + { + uassert_false(1); + } + + uassert_true(1); +} + +static void test_mailbox_create(void) +{ + rt_err_t result; + + test_dynamic_mb = rt_mb_create("test_dynamic_mb", sizeof(mb_pool) / 4, RT_IPC_FLAG_FIFO); + if (test_dynamic_mb == RT_NULL) + { + uassert_false(1); + } + result = rt_mb_delete(test_dynamic_mb); + if (result != RT_EOK) + { + uassert_false(1); + } + + test_dynamic_mb = rt_mb_create("test_dynamic_mb", sizeof(mb_pool) / 4, RT_IPC_FLAG_PRIO); + if (test_dynamic_mb == RT_NULL) + { + uassert_false(1); + } + result = rt_mb_delete(test_dynamic_mb); + if (result != RT_EOK) + { + uassert_false(1); + } + + uassert_true(1); +} + +static void test_mailbox_delete(void) +{ + rt_err_t result; + + test_dynamic_mb = rt_mb_create("test_dynamic_mb", sizeof(mb_pool) / 4, RT_IPC_FLAG_FIFO); + if (test_dynamic_mb == RT_NULL) + { + uassert_false(1); + } + result = rt_mb_delete(test_dynamic_mb); + if (result != RT_EOK) + { + uassert_false(1); + } + + test_dynamic_mb = rt_mb_create("test_dynamic_mb", sizeof(mb_pool) / 4, RT_IPC_FLAG_PRIO); + if (test_dynamic_mb == RT_NULL) + { + uassert_false(1); + } + result = rt_mb_delete(test_dynamic_mb); + if (result != RT_EOK) + { + uassert_false(1); + } + + uassert_true(1); +} + +static void thread2_send_static_mb(void *arg) +{ + rt_err_t res = RT_EOK; + + res = rt_mb_send(&test_static_mb, (rt_ubase_t)&mb_send_str1); + if (res != RT_EOK) + { + uassert_false(1); + } + rt_thread_mdelay(100); + + res = rt_mb_send_wait(&test_static_mb, (rt_ubase_t)&mb_send_str2, 10); + if (res != RT_EOK) + { + uassert_false(1); + } + rt_thread_mdelay(100); + + res = rt_mb_urgent(&test_static_mb, (rt_ubase_t)&mb_send_str3); + if (res != RT_EOK) + { + uassert_false(1); + } + + static_mb_send_thread_finish = 1; +} + +static void thread1_recv_static_mb(void *arg) +{ + rt_err_t result = RT_EOK; + + result = rt_mb_recv(&test_static_mb, (rt_ubase_t *)&mb_recv_str1, RT_WAITING_FOREVER); + if (result != RT_EOK || strcmp(mb_recv_str1, mb_send_str1) != 0) + { + uassert_false(1); + } + + result = rt_mb_recv(&test_static_mb, (rt_ubase_t *)&mb_recv_str2, RT_WAITING_FOREVER); + if (result != RT_EOK || strcmp(mb_recv_str2, mb_send_str2) != 0) + { + uassert_false(1); + } + + result = rt_mb_recv(&test_static_mb, (rt_ubase_t *)&mb_recv_str3, RT_WAITING_FOREVER); + if (result != RT_EOK || strcmp(mb_recv_str3, mb_send_str3) != 0) + { + uassert_false(1); + } + + static_mb_recv_thread_finish = 1; +} + +static void test_static_mailbox_send_recv(void) +{ + rt_err_t result; + + result = rt_mb_init(&test_static_mb, "mbt", &mb_pool[0], sizeof(mb_pool) / 4, RT_IPC_FLAG_FIFO); + if (result != RT_EOK) + { + uassert_false(1); + } + + rt_thread_init(&thread1, + "thread1", + thread1_recv_static_mb, + RT_NULL, + &thread1_stack[0], + sizeof(thread1_stack), + THREAD_PRIORITY - 1, THREAD_TIMESLICE); + rt_thread_startup(&thread1); + + rt_thread_init(&thread2, + "thread2", + thread2_send_static_mb, + RT_NULL, + &thread2_stack[0], + sizeof(thread2_stack), + THREAD_PRIORITY, THREAD_TIMESLICE); + rt_thread_startup(&thread2); + + while (static_mb_recv_thread_finish != 1 || static_mb_send_thread_finish != 1) + { + rt_thread_delay(1); + } + + if (rt_mb_detach(&test_static_mb) != RT_EOK) + { + uassert_false(1); + } + + uassert_true(1); +} + +static void thread4_send_dynamic_mb(void *arg) +{ + rt_err_t res = RT_EOK; + + res = rt_mb_send(test_dynamic_mb, (rt_ubase_t)&mb_send_str1); + if (res != RT_EOK) + { + uassert_false(1); + } + rt_thread_mdelay(100); + + res = rt_mb_send_wait(test_dynamic_mb, (rt_ubase_t)&mb_send_str2, 10); + if (res != RT_EOK) + { + uassert_false(1); + } + rt_thread_mdelay(100); + + res = rt_mb_urgent(test_dynamic_mb, (rt_ubase_t)&mb_send_str3); + if (res != RT_EOK) + { + uassert_false(1); + } + + dynamic_mb_send_thread_finish = 1; +} + +static void thread3_recv_dynamic_mb(void *arg) +{ + rt_err_t result = RT_EOK; + + result = rt_mb_recv(test_dynamic_mb, (rt_ubase_t *)&mb_recv_str1, RT_WAITING_FOREVER); + if (result != RT_EOK || strcmp(mb_recv_str1, mb_send_str1) != 0) + { + uassert_false(1); + } + + result = rt_mb_recv(test_dynamic_mb, (rt_ubase_t *)&mb_recv_str2, RT_WAITING_FOREVER); + if (result != RT_EOK || strcmp(mb_recv_str2, mb_send_str2) != 0) + { + uassert_false(1); + } + + result = rt_mb_recv(test_dynamic_mb, (rt_ubase_t *)&mb_recv_str3, RT_WAITING_FOREVER); + if (result != RT_EOK || strcmp(mb_recv_str3, mb_send_str3) != 0) + { + uassert_false(1); + } + + dynamic_mb_recv_thread_finish = 1; +} + +static void test_dynamic_mailbox_send_recv(void) +{ + test_dynamic_mb = rt_mb_create("mbt", sizeof(mb_pool) / 4, RT_IPC_FLAG_FIFO); + if (test_dynamic_mb == RT_NULL) + { + uassert_false(1); + } + + mb_recv = rt_thread_create("mb_recv_thread", + thread3_recv_dynamic_mb, + RT_NULL, + 1024, + THREAD_PRIORITY - 1, + THREAD_TIMESLICE); + if (mb_recv == RT_NULL) + { + uassert_false(1); + } + rt_thread_startup(mb_recv); + + mb_send = rt_thread_create("mb_send_thread", + thread4_send_dynamic_mb, + RT_NULL, + 1024, + THREAD_PRIORITY - 1, + THREAD_TIMESLICE); + if (mb_send == RT_NULL) + { + uassert_false(1); + } + rt_thread_startup(mb_send); + + while (dynamic_mb_recv_thread_finish != 1 || dynamic_mb_send_thread_finish != 1) + { + rt_thread_delay(1); + } + + if (rt_mb_delete(test_dynamic_mb) != RT_EOK) + { + uassert_false(1); + } + + uassert_true(1); +} + +static rt_err_t utest_tc_init(void) +{ + return RT_EOK; +} + +static rt_err_t utest_tc_cleanup(void) +{ + return RT_EOK; +} + +static void testcase(void) +{ + UTEST_UNIT_RUN(test_mailbox_init); + UTEST_UNIT_RUN(test_mailbox_deatch); + UTEST_UNIT_RUN(test_mailbox_create); + UTEST_UNIT_RUN(test_mailbox_delete); + UTEST_UNIT_RUN(test_static_mailbox_send_recv); + UTEST_UNIT_RUN(test_dynamic_mailbox_send_recv); +} +UTEST_TC_EXPORT(testcase, "src.ipc.mailbox_tc", utest_tc_init, utest_tc_cleanup, 60); -- cgit v1.3.1 From c360688714d3aaf1f2114c45afaa3ee2ddc64fdd Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sat, 11 Sep 2021 11:48:14 -0400 Subject: 使用poll.h代替dfs_poll.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/dfs/src/dfs_poll.c | 2 +- components/dfs/src/dfs_select.c | 2 +- components/drivers/serial/serial.c | 2 +- components/drivers/serial/serial_v2.c | 2 +- components/drivers/src/pipe.c | 2 +- components/libc/compilers/common/poll.h | 9 +++++++++ components/lwp/lwp_syscall.c | 2 +- components/net/at/at_socket/at_socket.c | 2 +- components/net/sal_socket/impl/af_inet_at.c | 2 +- components/net/sal_socket/impl/af_inet_lwip.c | 2 +- components/net/sal_socket/socket/net_sockets.c | 2 +- components/utilities/rt-link/src/rtlink_dev.c | 2 +- examples/rt-link/rtlink_dev_example.c | 2 +- 13 files changed, 21 insertions(+), 12 deletions(-) (limited to 'examples') diff --git a/components/dfs/src/dfs_poll.c b/components/dfs/src/dfs_poll.c index d1e0372494..607b3487be 100644 --- a/components/dfs/src/dfs_poll.c +++ b/components/dfs/src/dfs_poll.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #ifdef RT_USING_POSIX diff --git a/components/dfs/src/dfs_select.c b/components/dfs/src/dfs_select.c index c9286ca97f..ca9c549259 100644 --- a/components/dfs/src/dfs_select.c +++ b/components/dfs/src/dfs_select.c @@ -11,7 +11,7 @@ #include #include -#include +#include #include #ifdef RT_USING_POSIX diff --git a/components/drivers/serial/serial.c b/components/drivers/serial/serial.c index c567e34b52..289d523bd2 100644 --- a/components/drivers/serial/serial.c +++ b/components/drivers/serial/serial.c @@ -38,7 +38,7 @@ #ifdef RT_USING_POSIX #include -#include +#include #include #ifdef RT_USING_POSIX_TERMIOS diff --git a/components/drivers/serial/serial_v2.c b/components/drivers/serial/serial_v2.c index 6e65457a5d..390dd31748 100644 --- a/components/drivers/serial/serial_v2.c +++ b/components/drivers/serial/serial_v2.c @@ -18,7 +18,7 @@ #ifdef RT_USING_POSIX #include -#include +#include #include #ifdef getc diff --git a/components/drivers/src/pipe.c b/components/drivers/src/pipe.c index 7fa5eb067d..af90f13c6f 100644 --- a/components/drivers/src/pipe.c +++ b/components/drivers/src/pipe.c @@ -16,7 +16,7 @@ #ifdef RT_USING_POSIX #include #include -#include +#include #include static int pipe_fops_open(struct dfs_fd *fd) diff --git a/components/libc/compilers/common/poll.h b/components/libc/compilers/common/poll.h index 1862373559..aea73d6eaf 100644 --- a/components/libc/compilers/common/poll.h +++ b/components/libc/compilers/common/poll.h @@ -1,3 +1,12 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-09-11 Meco Man First version + */ #ifndef __POLL_H__ #define __POLL_H__ diff --git a/components/lwp/lwp_syscall.c b/components/lwp/lwp_syscall.c index 02915ab1cc..d9112eed3e 100644 --- a/components/lwp/lwp_syscall.c +++ b/components/lwp/lwp_syscall.c @@ -13,7 +13,7 @@ #include #include -#include +#include #include #if (defined(RT_USING_SAL) && defined(SAL_USING_POSIX)) diff --git a/components/net/at/at_socket/at_socket.c b/components/net/at/at_socket/at_socket.c index 8215dd4417..96ea053f9c 100644 --- a/components/net/at/at_socket/at_socket.c +++ b/components/net/at/at_socket/at_socket.c @@ -19,7 +19,7 @@ #include #ifdef SAL_USING_POSIX -#include +#include #endif #include diff --git a/components/net/sal_socket/impl/af_inet_at.c b/components/net/sal_socket/impl/af_inet_at.c index c85dfe9f06..07dff0018c 100644 --- a/components/net/sal_socket/impl/af_inet_at.c +++ b/components/net/sal_socket/impl/af_inet_at.c @@ -19,7 +19,7 @@ #include #ifdef SAL_USING_POSIX -#include +#include #endif #ifdef SAL_USING_AT diff --git a/components/net/sal_socket/impl/af_inet_lwip.c b/components/net/sal_socket/impl/af_inet_lwip.c index 2e19275b5d..2cf0958ee4 100644 --- a/components/net/sal_socket/impl/af_inet_lwip.c +++ b/components/net/sal_socket/impl/af_inet_lwip.c @@ -17,7 +17,7 @@ #include #ifdef SAL_USING_POSIX -#include +#include #endif #include diff --git a/components/net/sal_socket/socket/net_sockets.c b/components/net/sal_socket/socket/net_sockets.c index 7d4db34327..1b6db50e6d 100644 --- a/components/net/sal_socket/socket/net_sockets.c +++ b/components/net/sal_socket/socket/net_sockets.c @@ -11,7 +11,7 @@ #include #include -#include +#include #include #include #include diff --git a/components/utilities/rt-link/src/rtlink_dev.c b/components/utilities/rt-link/src/rtlink_dev.c index 5eff1f9782..efebf37565 100644 --- a/components/utilities/rt-link/src/rtlink_dev.c +++ b/components/utilities/rt-link/src/rtlink_dev.c @@ -21,7 +21,7 @@ #ifdef RT_USING_POSIX #include -#include +#include int rtlink_fops_open(struct dfs_fd *fd) { diff --git a/examples/rt-link/rtlink_dev_example.c b/examples/rt-link/rtlink_dev_example.c index 0a026bcb3d..d00f916efd 100644 --- a/examples/rt-link/rtlink_dev_example.c +++ b/examples/rt-link/rtlink_dev_example.c @@ -47,7 +47,7 @@ static rt_err_t rtlink_dev_tx_done(rt_device_t dev, void *buffer) #ifdef RT_USING_POSIX #include -#include +#include #include #define RTLINK01_PATH "/dev/rtlink01" -- cgit v1.3.1