kernel: k_msgq_put should trigger reschedule

Make `k_msgq_put` as scheduler point to resolve
high priority thread can not preempt low priority
thread.

Signed-off-by: TaiJu Wu <tjwu1217@gmail.com>
This commit is contained in:
TaiJu Wu 2024-10-16 22:33:44 +08:00 committed by Benjamin Cabé
commit fc47180850
2 changed files with 2 additions and 1 deletions

View file

@ -108,6 +108,7 @@ The following code builds on the example above, and uses the message queue
to pass data items from a producing thread to one or more consuming threads.
If the message queue fills up because the consumers can't keep up, the
producing thread throws away all existing data so the newer data can be saved.
Note that this api will trigger reschedule.
.. code-block:: c

View file

@ -178,7 +178,7 @@ int z_impl_k_msgq_put(struct k_msgq *msgq, const void *data, k_timeout_t timeout
SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_msgq, put, msgq, timeout, result);
k_spin_unlock(&msgq->lock, key);
z_reschedule(&msgq->lock, key);
return result;
}