[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