aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386
diff options
context:
space:
mode:
authorJohn M. Calandrino <jmc@jupiter-cs.cs.unc.edu>2007-04-24 15:48:52 -0400
committerJohn M. Calandrino <jmc@jupiter-cs.cs.unc.edu>2007-04-24 15:48:52 -0400
commit3421ae6ac693210251335faefda997b0ccbde16d (patch)
tree37b53ae7dd78a81b654cebbcee430418f7a00b8d /arch/i386
parent92f94ecce15c3b22dc07ceba9422e511dbfa0b19 (diff)
Fixed GSN-EDF to handle correct wakeup of tasks that just exited a
semaphore.
Diffstat (limited to 'arch/i386')
-rw-r--r--arch/i386/kernel/pi_sem_syscalls.c1
-rw-r--r--arch/i386/kernel/sem_syscalls.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/arch/i386/kernel/pi_sem_syscalls.c b/arch/i386/kernel/pi_sem_syscalls.c
index 85f211f0d8..72fd67e6e5 100644
--- a/arch/i386/kernel/pi_sem_syscalls.c
+++ b/arch/i386/kernel/pi_sem_syscalls.c
@@ -130,6 +130,7 @@ asmlinkage long sys_pi_sema_free(pi_sema_id sem_id)
130 list_for_each_safe(tmp, next, &pi_sems[sem_id].wait.task_list) { 130 list_for_each_safe(tmp, next, &pi_sems[sem_id].wait.task_list) {
131 wait_queue_t *curr = list_entry(tmp, wait_queue_t, task_list); 131 wait_queue_t *curr = list_entry(tmp, wait_queue_t, task_list);
132 list_del(tmp); 132 list_del(tmp);
133 set_rt_flags((struct task_struct*)curr->private, RT_F_EXIT_SEM);
133 curr->func(curr, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE, 134 curr->func(curr, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE,
134 0, NULL); 135 0, NULL);
135 } 136 }
diff --git a/arch/i386/kernel/sem_syscalls.c b/arch/i386/kernel/sem_syscalls.c
index 2bdbc5fd96..8b3270d0d4 100644
--- a/arch/i386/kernel/sem_syscalls.c
+++ b/arch/i386/kernel/sem_syscalls.c
@@ -67,6 +67,7 @@ asmlinkage long sys_sema_free(sema_id sem_id)
67 list_for_each_safe(tmp, next, &sems[sem_id].wait.task_list) { 67 list_for_each_safe(tmp, next, &sems[sem_id].wait.task_list) {
68 wait_queue_t *curr = list_entry(tmp, wait_queue_t, task_list); 68 wait_queue_t *curr = list_entry(tmp, wait_queue_t, task_list);
69 list_del(tmp); 69 list_del(tmp);
70 set_rt_flags((struct task_struct*)curr->private, RT_F_EXIT_SEM);
70 curr->func(curr, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE, 71 curr->func(curr, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE,
71 0, NULL); 72 0, NULL);
72 } 73 }