]> rtime.felk.cvut.cz Git - l4.git/blobdiff - kernel/fiasco/src/kern/ipc_timeout.cpp
update
[l4.git] / kernel / fiasco / src / kern / ipc_timeout.cpp
index 08c20701eaae1143a552a6c02c6001dc0ba06a6b..9a382bb3a1ef84ee69b061c3c7547f24a981ca70 100644 (file)
@@ -55,7 +55,10 @@ IPC_timeout::expired()
 {
   Receiver * const _owner = owner();
 
-  // Set thread ready
+  Mword ipc_state = _owner->state() & Thread_ipc_mask;
+  if (!ipc_state || (ipc_state & Thread_receive_in_progress))
+    return false;
+
   _owner->state_change_dirty(~Thread_ipc_mask, Thread_ready | Thread_timeout);
 
   // Flag reschedule if owner's priority is higher than the current