Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 60649
b: refs/heads/master
c: c77239b
h: refs/heads/master
i:
  60647: aaf1756
v: v3
  • Loading branch information
Christoph Hellwig authored and Paul Mackerras committed Jul 3, 2007
1 parent 65ed6c3 commit 9d03370
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 08c9692b168240729cf89c69c4ad722760a5690c
refs/heads/master: c77239b8be74f775142d9dd01041e2ce864ba20d
18 changes: 10 additions & 8 deletions trunk/arch/powerpc/platforms/cell/spufs/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -294,21 +294,24 @@ static void __spu_add_to_rq(struct spu_context *ctx)
{
int prio = ctx->prio;

spu_prio->nr_waiting++;
list_add_tail(&ctx->rq, &spu_prio->runq[prio]);
set_bit(prio, spu_prio->bitmap);
if (!spu_prio->nr_waiting++)
__mod_timer(&spusched_timer, jiffies + SPUSCHED_TICK);
}

static void __spu_del_from_rq(struct spu_context *ctx)
{
int prio = ctx->prio;

if (!list_empty(&ctx->rq)) {
if (!--spu_prio->nr_waiting)
del_timer(&spusched_timer);
list_del_init(&ctx->rq);
spu_prio->nr_waiting--;

if (list_empty(&spu_prio->runq[prio]))
clear_bit(prio, spu_prio->bitmap);
}
if (list_empty(&spu_prio->runq[prio]))
clear_bit(prio, spu_prio->bitmap);
}

static void spu_prio_wait(struct spu_context *ctx)
Expand Down Expand Up @@ -654,9 +657,6 @@ static int spusched_thread(void *unused)
struct spu *spu, *next;
int node;

setup_timer(&spusched_timer, spusched_wake, 0);
__mod_timer(&spusched_timer, jiffies + SPUSCHED_TICK);

while (!kthread_should_stop()) {
set_current_state(TASK_INTERRUPTIBLE);
schedule();
Expand All @@ -670,7 +670,6 @@ static int spusched_thread(void *unused)
}
}

del_timer_sync(&spusched_timer);
return 0;
}

Expand Down Expand Up @@ -732,6 +731,8 @@ int __init spu_sched_init(void)
}
spin_lock_init(&spu_prio->runq_lock);

setup_timer(&spusched_timer, spusched_wake, 0);

spusched_task = kthread_run(spusched_thread, NULL, "spusched");
if (IS_ERR(spusched_task)) {
err = PTR_ERR(spusched_task);
Expand Down Expand Up @@ -762,6 +763,7 @@ void __exit spu_sched_exit(void)

remove_proc_entry("spu_loadavg", NULL);

del_timer_sync(&spusched_timer);
kthread_stop(spusched_task);

for (node = 0; node < MAX_NUMNODES; node++) {
Expand Down

0 comments on commit 9d03370

Please sign in to comment.