Skip to content
Commit 4b49d7cb authored by Kai Vehmanen's avatar Kai Vehmanen Committed by Anas Nashif
Browse files

lib: os: p4wq: fix K_P4WQ_DELAYED_START mode



When the PRESTART thread state was removed, this changed the semantics
of k_thread_start() when thread was created with a K_FOREVER timeout,
suspended and then started with k_thread_start().

This sequence is used in p4wq to implement K_P4WQ_DELAYED_START
(which again is needed by K_P4WQ_USER_CPU_MASK).

With PRESTART removed, the following sequence:
  z_mark_thread_as_not_suspended(thread);
  k_thread_start(thread);

.. no longer starts the thread. As a result, p4wq users like SOF
multicore configurations, hit errors as p4wq threads never start.

Fix the implementation by removing the calls to change thread
suspended state explicitly, but rather rely on the new
k_thread_create() and k_thread_start() semantics.

Fixes: 7cdf4054 ("kernel/sched: Eliminate PRESTART thread state")
Signed-off-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
parent b8957692
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment