summaryrefslogtreecommitdiff
path: root/zephyr/test/hooks/hooks.c
diff options
context:
space:
mode:
authorWealian Liao <whliao@nuvoton.corp-partner.google.com>2021-03-08 14:47:59 +0800
committerCommit Bot <commit-bot@chromium.org>2021-03-10 03:53:34 +0000
commit819adb4fa98f5d32a373ebd63e668b1c1bc5b121 (patch)
treedb3a05edc92e98757ebde2570b7e4577040bdc19 /zephyr/test/hooks/hooks.c
parent43fe3569949f74ece62d6a82829355c39a010d65 (diff)
downloadchrome-ec-819adb4fa98f5d32a373ebd63e668b1c1bc5b121.tar.gz
zephyr: add defer canceling
For the description of hook_call_deferred() in hooks.h, pass delay time -1 to hook_call_deferred() should cancel the deferred call. Add canceling to sync the original behavior in shim hook. BRANCH=none BUG=none TEST=zmake testall TEST=check defer is canceled by ` -1 ` parameter. Signed-off-by: Wealian Liao <whliao@nuvoton.corp-partner.google.com> Change-Id: I3e9743d5c19efbc8619fd5cbd61ff247db700af9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2738912 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
Diffstat (limited to 'zephyr/test/hooks/hooks.c')
-rw-r--r--zephyr/test/hooks/hooks.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/zephyr/test/hooks/hooks.c b/zephyr/test/hooks/hooks.c
index 6b482b30cf..9f504d4ff4 100644
--- a/zephyr/test/hooks/hooks.c
+++ b/zephyr/test/hooks/hooks.c
@@ -120,6 +120,27 @@ static void test_deferred_func_push_out(void)
"The deferred function was not called, but should have been");
}
+static bool deferred_func_3_called;
+
+static void deferred_func_3(void)
+{
+ deferred_func_3_called = true;
+}
+DECLARE_DEFERRED(deferred_func_3);
+
+static void test_deferred_func_cancel(void)
+{
+ zassert_false(
+ deferred_func_3_called,
+ "The deferred function was called, but should not have been");
+ hook_call_deferred(&deferred_func_3_data, DEFERRED_DELAY_US);
+ hook_call_deferred(&deferred_func_3_data, -1);
+ k_usleep(DEFERRED_DELAY_US * 2);
+ zassert_false(
+ deferred_func_3_called,
+ "The deferred function was called, but should not have been");
+}
+
void test_main(void)
{
ztest_test_suite(
@@ -128,7 +149,8 @@ void test_main(void)
ztest_unit_test(test_hook_list_single),
ztest_unit_test(test_hook_list_empty),
ztest_unit_test(test_deferred_func),
- ztest_unit_test(test_deferred_func_push_out));
+ ztest_unit_test(test_deferred_func_push_out),
+ ztest_unit_test(test_deferred_func_cancel));
ztest_run_test_suite(hooks_tests);
}