aboutsummaryrefslogtreecommitdiffstats
path: root/litmus
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-10-23 01:01:49 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-10-23 01:01:49 -0400
commit3dd41424090a0ca3a660218d06afe6ff4441bad3 (patch)
tree511ef1bb1799027fc5aad574adce49120ecadd87 /litmus
parent5c5456402d467969b217d7fdd6670f8c8600f5a8 (diff)
parentf6f94e2ab1b33f0082ac22d71f66385a60d8157f (diff)
Merge commit 'v2.6.36' into wip-merge-2.6.36
Conflicts: Makefile arch/x86/include/asm/unistd_32.h arch/x86/kernel/syscall_table_32.S kernel/sched.c kernel/time/tick-sched.c Relevant API and functions changes (solved in this commit): - (API) .enqueue_task() (enqueue_task_litmus), dequeue_task() (dequeue_task_litmus), [litmus/sched_litmus.c] - (API) .select_task_rq() (select_task_rq_litmus) [litmus/sched_litmus.c] - (API) sysrq_dump_trace_buffer() and sysrq_handle_kill_rt_tasks() [litmus/sched_trace.c] - struct kfifo internal buffer name changed (buffer -> buf) [litmus/sched_trace.c] - add_wait_queue_exclusive_locked -> __add_wait_queue_tail_exclusive [litmus/fmlp.c] - syscall numbers for both x86_32 and x86_64
Diffstat (limited to 'litmus')
-rw-r--r--litmus/fmlp.c2
-rw-r--r--litmus/litmus.c2
-rw-r--r--litmus/sched_litmus.c12
-rw-r--r--litmus/sched_trace.c4
4 files changed, 11 insertions, 9 deletions
diff --git a/litmus/fmlp.c b/litmus/fmlp.c
index 03fa7358d5eb..a9a638576d69 100644
--- a/litmus/fmlp.c
+++ b/litmus/fmlp.c
@@ -148,7 +148,7 @@ static int do_fmlp_down(struct pi_semaphore* sem)
148 waitqueue_active(&sem->wait)) { 148 waitqueue_active(&sem->wait)) {
149 /* we need to suspend */ 149 /* we need to suspend */
150 tsk->state = TASK_UNINTERRUPTIBLE; 150 tsk->state = TASK_UNINTERRUPTIBLE;
151 add_wait_queue_exclusive_locked(&sem->wait, &wait); 151 __add_wait_queue_tail_exclusive(&sem->wait, &wait);
152 152
153 TRACE_CUR("suspends on PI lock %p\n", sem); 153 TRACE_CUR("suspends on PI lock %p\n", sem);
154 litmus->pi_block(sem, tsk); 154 litmus->pi_block(sem, tsk);
diff --git a/litmus/litmus.c b/litmus/litmus.c
index b04a42b0da9c..e854ba317762 100644
--- a/litmus/litmus.c
+++ b/litmus/litmus.c
@@ -488,7 +488,7 @@ void exit_litmus(struct task_struct *dead_tsk)
488#ifdef CONFIG_MAGIC_SYSRQ 488#ifdef CONFIG_MAGIC_SYSRQ
489int sys_kill(int pid, int sig); 489int sys_kill(int pid, int sig);
490 490
491static void sysrq_handle_kill_rt_tasks(int key, struct tty_struct *tty) 491static void sysrq_handle_kill_rt_tasks(int key)
492{ 492{
493 struct task_struct *t; 493 struct task_struct *t;
494 read_lock(&tasklist_lock); 494 read_lock(&tasklist_lock);
diff --git a/litmus/sched_litmus.c b/litmus/sched_litmus.c
index 3ed713b8791b..65873152e68f 100644
--- a/litmus/sched_litmus.c
+++ b/litmus/sched_litmus.c
@@ -154,9 +154,9 @@ litmus_schedule(struct rq *rq, struct task_struct *prev)
154} 154}
155 155
156static void enqueue_task_litmus(struct rq *rq, struct task_struct *p, 156static void enqueue_task_litmus(struct rq *rq, struct task_struct *p,
157 int wakeup, bool head) 157 int flags)
158{ 158{
159 if (wakeup) { 159 if (flags & ENQUEUE_WAKEUP) {
160 sched_trace_task_resume(p); 160 sched_trace_task_resume(p);
161 tsk_rt(p)->present = 1; 161 tsk_rt(p)->present = 1;
162 /* LITMUS^RT plugins need to update the state 162 /* LITMUS^RT plugins need to update the state
@@ -176,9 +176,10 @@ static void enqueue_task_litmus(struct rq *rq, struct task_struct *p,
176 TRACE_TASK(p, "ignoring an enqueue, not a wake up.\n"); 176 TRACE_TASK(p, "ignoring an enqueue, not a wake up.\n");
177} 177}
178 178
179static void dequeue_task_litmus(struct rq *rq, struct task_struct *p, int sleep) 179static void dequeue_task_litmus(struct rq *rq, struct task_struct *p,
180 int flags)
180{ 181{
181 if (sleep) { 182 if (flags & DEQUEUE_SLEEP) {
182 litmus->task_block(p); 183 litmus->task_block(p);
183 tsk_rt(p)->present = 0; 184 tsk_rt(p)->present = 0;
184 sched_trace_task_block(p); 185 sched_trace_task_block(p);
@@ -279,7 +280,8 @@ static void set_curr_task_litmus(struct rq *rq)
279 * We don't care about the scheduling domain; can gets called from 280 * We don't care about the scheduling domain; can gets called from
280 * exec, fork, wakeup. 281 * exec, fork, wakeup.
281 */ 282 */
282static int select_task_rq_litmus(struct task_struct *p, int sd_flag, int flags) 283static int select_task_rq_litmus(struct rq *rq, struct task_struct *p,
284 int sd_flag, int flags)
283{ 285{
284 /* preemption is already disabled. 286 /* preemption is already disabled.
285 * We don't want to change cpu here 287 * We don't want to change cpu here
diff --git a/litmus/sched_trace.c b/litmus/sched_trace.c
index 1fa2094b0495..8051b51a2022 100644
--- a/litmus/sched_trace.c
+++ b/litmus/sched_trace.c
@@ -266,7 +266,7 @@ static int log_open(struct inode *in, struct file *filp)
266 266
267 printk(KERN_DEBUG 267 printk(KERN_DEBUG
268 "sched_trace kfifo with buffer starting at: 0x%p\n", 268 "sched_trace kfifo with buffer starting at: 0x%p\n",
269 (tbuf->buf.kfifo).buffer); 269 (tbuf->buf.kfifo).buf);
270 270
271 /* override printk() */ 271 /* override printk() */
272 trace_override++; 272 trace_override++;
@@ -340,7 +340,7 @@ void dump_trace_buffer(int max)
340 trace_recurse = 0; 340 trace_recurse = 0;
341} 341}
342 342
343static void sysrq_dump_trace_buffer(int key, struct tty_struct *tty) 343static void sysrq_dump_trace_buffer(int key)
344{ 344{
345 dump_trace_buffer(100); 345 dump_trace_buffer(100);
346} 346}