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:
parent
42511c80ba
commit
fc47180850
2 changed files with 2 additions and 1 deletions
|
@ -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.
|
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
|
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.
|
producing thread throws away all existing data so the newer data can be saved.
|
||||||
|
Note that this api will trigger reschedule.
|
||||||
|
|
||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
|
|
|
@ -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);
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue