diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-10-23 01:01:49 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-10-23 01:01:49 -0400 |
commit | 3dd41424090a0ca3a660218d06afe6ff4441bad3 (patch) | |
tree | 511ef1bb1799027fc5aad574adce49120ecadd87 /litmus | |
parent | 5c5456402d467969b217d7fdd6670f8c8600f5a8 (diff) | |
parent | f6f94e2ab1b33f0082ac22d71f66385a60d8157f (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.c | 2 | ||||
-rw-r--r-- | litmus/litmus.c | 2 | ||||
-rw-r--r-- | litmus/sched_litmus.c | 12 | ||||
-rw-r--r-- | litmus/sched_trace.c | 4 |
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 |
489 | int sys_kill(int pid, int sig); | 489 | int sys_kill(int pid, int sig); |
490 | 490 | ||
491 | static void sysrq_handle_kill_rt_tasks(int key, struct tty_struct *tty) | 491 | static 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 | ||
156 | static void enqueue_task_litmus(struct rq *rq, struct task_struct *p, | 156 | static 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 | ||
179 | static void dequeue_task_litmus(struct rq *rq, struct task_struct *p, int sleep) | 179 | static 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 | */ |
282 | static int select_task_rq_litmus(struct task_struct *p, int sd_flag, int flags) | 283 | static 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 | ||
343 | static void sysrq_dump_trace_buffer(int key, struct tty_struct *tty) | 343 | static void sysrq_dump_trace_buffer(int key) |
344 | { | 344 | { |
345 | dump_trace_buffer(100); | 345 | dump_trace_buffer(100); |
346 | } | 346 | } |