Module: xenomai-gch
Branch: for-forge
Commit: 6e1010d0a977fb07039e678e2421d5ffa4c69027
URL:    
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=6e1010d0a977fb07039e678e2421d5ffa4c69027

Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org>
Date:   Fri Oct 16 11:27:39 2015 +0200

cobalt/sched: add missing rescheduling point

handle_setaffinity_event calls xnthread_migrate_passive() which sets the
reschedling bit. Since this bit is visible on other cpus, and may cause
them to avoid sending a rescheduling IPI, call xnsched_run() to clear
it.

---

 kernel/cobalt/posix/process.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/kernel/cobalt/posix/process.c b/kernel/cobalt/posix/process.c
index c5a3297..543f095 100644
--- a/kernel/cobalt/posix/process.c
+++ b/kernel/cobalt/posix/process.c
@@ -851,6 +851,7 @@ static int handle_setaffinity_event(struct 
ipipe_cpu_migration_data *d)
                    xnthread_test_state(thread, XNTHREAD_BLOCK_BITS)) {
                        sched = xnsched_struct(d->dest_cpu);
                        xnthread_migrate_passive(thread, sched);
+                       xnsched_run();
                }
                xnlock_put_irqrestore(&nklock, s);
        }


_______________________________________________
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git

Reply via email to