[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH 07/11] kernel2: pm_thread_block() mit wartenden Threads
! kernel2: pm_thread_block() hat bisher gewartet, bis ein Thread
irgendwann in READY landet. Das passiert dummerweise nie, wenn der
Thread gar nicht läuft, sondern auf RPC oder LIO wartet. Deswegen wird
jetzt auf !RUNNING geprüft.
Damit kann es passieren, dass ein Thread nach dem Entblocken plötzlich
READY ist, obwohl er vorher gewartet hat, aber das ist okay. Dann
dreht er eben unnötigerweise eine Runde in der Schleife des Aufrufers.
Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
src/kernel2/src/tasks/thread.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/kernel2/src/tasks/thread.c b/src/kernel2/src/tasks/thread.c
index 676a930..06a2e9e 100644
--- a/src/kernel2/src/tasks/thread.c
+++ b/src/kernel2/src/tasks/thread.c
@@ -293,7 +293,7 @@ bool pm_thread_block(pm_thread_t* thread)
lock(&thread->lock);
- if (thread->status == PM_STATUS_READY) {
+ if (thread->status != PM_STATUS_RUNNING) {
thread->status = PM_STATUS_BLOCKED;
}
--
1.7.7