diff --git a/examples/utest/testcases/kernel/Kconfig b/examples/utest/testcases/kernel/Kconfig index fd16b95c685e7d657549b7cd73eeecea2b0e5c6f..e8dd3c2e9772d4c290fbd7a78e50f6395f093f4e 100644 --- a/examples/utest/testcases/kernel/Kconfig +++ b/examples/utest/testcases/kernel/Kconfig @@ -14,11 +14,9 @@ config UTEST_SEMAPHORE_TC default n depends on RT_USING_SEMAPHORE - config UTEST_EVENT_TC bool "event test" default n depends on RT_USING_EVENT - endmenu diff --git a/examples/utest/testcases/kernel/SConscript b/examples/utest/testcases/kernel/SConscript index 565d2d97742582a8553e5e112d2a5b871f014a79..26d5ddbf17e8f737747086d1d69b98a8794bd03e 100644 --- a/examples/utest/testcases/kernel/SConscript +++ b/examples/utest/testcases/kernel/SConscript @@ -17,7 +17,6 @@ if GetDepend(['UTEST_SEMAPHORE_TC']): if GetDepend(['UTEST_EVENT_TC']): src += ['event_tc.c'] - CPPPATH = [cwd] group = DefineGroup('utestcases', src, depend = [], CPPPATH = CPPPATH) diff --git a/examples/utest/testcases/kernel/irq_tc.c b/examples/utest/testcases/kernel/irq_tc.c index 27a9b64b5b49d4962082d880791f29dc6e7bf0ab..86b6c144f1f6347bcfa1069bceba933e20c419af 100644 --- a/examples/utest/testcases/kernel/irq_tc.c +++ b/examples/utest/testcases/kernel/irq_tc.c @@ -10,6 +10,8 @@ #include #include "utest.h" +#include "rthw.h" + #define UTEST_NAME "irq_tc" static uint32_t irq_count = 0; static uint32_t max_get_nest_count = 0; @@ -25,12 +27,16 @@ static void irq_callback() static void irq_test(void) { + irq_count = 0; rt_interrupt_enter_sethook(irq_callback); - rt_thread_delay(2); - LOG_D("start irq_test OK!\n"); + rt_interrupt_leave_sethook(irq_callback); + rt_thread_mdelay(2); LOG_D("%s test irq_test! irq_count %d max_get_nest_count %d\n", UTEST_NAME, irq_count, max_get_nest_count); uassert_int_not_equal(0, irq_count); uassert_int_not_equal(0, max_get_nest_count); + rt_interrupt_enter_sethook(RT_NULL); + rt_interrupt_leave_sethook(RT_NULL); + LOG_D("irq_test OK!\n"); } static rt_err_t utest_tc_init(void) @@ -45,8 +51,28 @@ static rt_err_t utest_tc_cleanup(void) return RT_EOK; } +static void interrupt_test(void) +{ + rt_base_t level; + uint32_t i = 1000; + + rt_interrupt_enter_sethook(irq_callback); + rt_interrupt_leave_sethook(irq_callback); + irq_count = 0; + level = rt_hw_interrupt_disable(); + while(i) + { + i --; + } + uassert_int_equal(0, irq_count); + rt_hw_interrupt_enable(level); + rt_interrupt_enter_sethook(RT_NULL); + rt_interrupt_leave_sethook(RT_NULL); + +} static void testcase(void) { UTEST_UNIT_RUN(irq_test); + UTEST_UNIT_RUN(interrupt_test); } UTEST_TC_EXPORT(testcase, "testcases.kernel.irq_tc", utest_tc_init, utest_tc_cleanup, 10);