summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/msghandler.C5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/kernel/msghandler.C b/src/kernel/msghandler.C
index 8e7244d2b..200f9c028 100644
--- a/src/kernel/msghandler.C
+++ b/src/kernel/msghandler.C
@@ -165,7 +165,10 @@ int MessageHandler::recvMessage(msg_t* i_msg)
{
// Successful response, resume task.
- if (!restored_task) // Immediately execute first deferred task.
+ // Immediately execute first deferred task unless it is pinned,
+ // in which case it must go back onto the queue of the CPU it's
+ // pinned to (and may take slightly longer to dispatch)
+ if (!restored_task && !deferred_task->affinity_pinned)
{
restored_task = true;
TaskManager::setCurrentTask(deferred_task);
OpenPOWER on IntegriCloud