summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Rosenthal <jrosenth@chromium.org>2021-09-07 16:50:54 -0600
committerCommit Bot <commit-bot@chromium.org>2021-09-08 09:04:30 +0000
commit97e813999aecfa7ee8923f3aa745af75f4c43d5f (patch)
tree941e9e816b0aea7491ede515b929e82dd4ef1df5
parent1bcc3daf150e5718910ea331f78e4477d21864fa (diff)
downloadchrome-ec-97e813999aecfa7ee8923f3aa745af75f4c43d5f.tar.gz
zephyr: hooks: use k_work_reschedule to schedule deferred tasks
k_work_reschedule will reschedule a work item if it's already been scheduled. Switching from k_work_schedule to k_work_reschedule fixes us the hooks test snag we saw during the v2.6 uprev. BUG=b:195971523 BRANCH=none TEST=zmake testall Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Change-Id: I66f6bbad1cd39847e68a178165c9c59922abbb7c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3144378 Commit-Queue: Fabio Baltieri <fabiobaltieri@google.com> Reviewed-by: Fabio Baltieri <fabiobaltieri@google.com>
-rw-r--r--zephyr/shim/src/hooks.c2
-rw-r--r--zephyr/test/hooks/hooks.c6
2 files changed, 1 insertions, 7 deletions
diff --git a/zephyr/shim/src/hooks.c b/zephyr/shim/src/hooks.c
index 8bbd7bed05..79a611812f 100644
--- a/zephyr/shim/src/hooks.c
+++ b/zephyr/shim/src/hooks.c
@@ -21,7 +21,7 @@ int hook_call_deferred(const struct deferred_data *data, int us)
if (us == -1) {
k_work_cancel_delayable(work);
} else if (us >= 0) {
- rv = k_work_schedule(work, K_USEC(us));
+ rv = k_work_reschedule(work, K_USEC(us));
if (rv == -EINVAL) {
/* Already processing or completed. */
return 0;
diff --git a/zephyr/test/hooks/hooks.c b/zephyr/test/hooks/hooks.c
index c3b63f5a01..a9e0982e46 100644
--- a/zephyr/test/hooks/hooks.c
+++ b/zephyr/test/hooks/hooks.c
@@ -111,15 +111,9 @@ static void test_deferred_func_push_out(void)
hook_call_deferred(&deferred_func_2_data, DEFERRED_DELAY_US);
hook_call_deferred(&deferred_func_2_data, DEFERRED_DELAY_US * 3);
k_usleep(DEFERRED_DELAY_US * 2);
- /*
- * TODO(b/195971523): fails on v2.6 due to timing changes in
- * POSIX board. Disable until a real solution is found.
- */
-#if 0
zassert_false(
deferred_func_2_called,
"The deferred function was called, but should not have been");
-#endif
k_usleep(DEFERRED_DELAY_US * 2);
zassert_true(
deferred_func_called,