diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2011-09-21 18:25:30 -0400 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2011-09-21 18:25:30 -0400 |
commit | d27d5ce8b5fcd8408e995d13608d8993cb720aab (patch) | |
tree | 99f3163bc76c74234c9001a9388d91afb8584ab2 /litmus/rt_domain.c | |
parent | 313bcb226f88d17b193f9e7db7ecb4f57320a596 (diff) |
Now with fine grained locking
Diffstat (limited to 'litmus/rt_domain.c')
-rw-r--r-- | litmus/rt_domain.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/litmus/rt_domain.c b/litmus/rt_domain.c index 65c6e5c02f1e..3e419d7c9ae7 100644 --- a/litmus/rt_domain.c +++ b/litmus/rt_domain.c | |||
@@ -20,7 +20,7 @@ | |||
20 | 20 | ||
21 | 21 | ||
22 | /* Uncomment when debugging timer races... */ | 22 | /* Uncomment when debugging timer races... */ |
23 | #if 1 | 23 | #if 0 |
24 | #define VTRACE_TASK TRACE_TASK | 24 | #define VTRACE_TASK TRACE_TASK |
25 | #define VTRACE TRACE | 25 | #define VTRACE TRACE |
26 | #else | 26 | #else |
@@ -371,8 +371,12 @@ static void pd_requeue(domain_t *dom, struct task_struct *task) | |||
371 | 371 | ||
372 | if (is_released(task, litmus_clock())) { | 372 | if (is_released(task, litmus_clock())) { |
373 | __add_ready(domain, task); | 373 | __add_ready(domain, task); |
374 | TRACE("rt: adding %s/%d (%llu, %llu) rel=%llu to ready queue at %llu\n", | ||
375 | task->comm, task->pid, get_exec_cost(task), get_rt_period(task), | ||
376 | get_release(task), litmus_clock()); | ||
374 | } else { | 377 | } else { |
375 | /* task has to wait for next release */ | 378 | /* task has to wait for next release */ |
379 | TRACE_TASK(task, "add release(), rel=%llu\n", get_release(task)); | ||
376 | add_release(domain, task); | 380 | add_release(domain, task); |
377 | } | 381 | } |
378 | } | 382 | } |
@@ -398,22 +402,16 @@ static struct task_struct* pd_peek_ready(domain_t *dom) | |||
398 | /* pd_domain_init - create a generic domain wrapper for an rt_domain | 402 | /* pd_domain_init - create a generic domain wrapper for an rt_domain |
399 | */ | 403 | */ |
400 | void pd_domain_init(domain_t *dom, | 404 | void pd_domain_init(domain_t *dom, |
405 | rt_domain_t *domain, | ||
401 | bheap_prio_t order, | 406 | bheap_prio_t order, |
402 | check_resched_needed_t check, | 407 | check_resched_needed_t check, |
403 | release_jobs_t release, | 408 | release_jobs_t release, |
404 | preempt_needed_t preempt_needed, | 409 | preempt_needed_t preempt_needed, |
405 | task_prio_t priority) | 410 | task_prio_t priority) |
406 | { | 411 | { |
407 | rt_domain_t *domain = kmalloc(sizeof(rt_domain_t), GFP_ATOMIC); | ||
408 | |||
409 | rt_domain_init(domain, order, check, release); | 412 | rt_domain_init(domain, order, check, release); |
410 | domain_init(dom, &domain->ready_lock, | 413 | domain_init(dom, &domain->ready_lock, |
411 | pd_requeue, pd_peek_ready, pd_take_ready, | 414 | pd_requeue, pd_peek_ready, pd_take_ready, |
412 | preempt_needed, priority); | 415 | preempt_needed, priority); |
413 | dom->data = domain; | 416 | dom->data = domain; |
414 | } | 417 | } |
415 | |||
416 | void pd_domain_free(domain_t *dom) | ||
417 | { | ||
418 | kfree(dom->data); | ||
419 | } | ||