diff options
author | Joshua Bakita <jbakita@cs.unc.edu> | 2020-10-14 21:29:28 -0400 |
---|---|---|
committer | Joshua Bakita <jbakita@cs.unc.edu> | 2020-10-14 21:29:28 -0400 |
commit | 6e3c78374e56bbdfb5e8d91c956701d061ecc9a7 (patch) | |
tree | 36c5335170a38a1d90774c16c4d201254f6413b8 | |
parent | 8a29b56fcc329454274d5d135659935e706af7cc (diff) |
Remove duplicate or unused functions + style cleanup
Reduces the size of our diff from upstream litmus and
should have no impact on functionality. Ported from MC^2.
-rw-r--r-- | include/litmus/litmus.h | 1 | ||||
-rw-r--r-- | include/litmus/rt_domain.h | 18 | ||||
-rw-r--r-- | litmus/reservations/ext_reservation.c | 17 | ||||
-rw-r--r-- | litmus/reservations/gedf_reservation.c | 2 | ||||
-rw-r--r-- | litmus/reservations/table_driven_ext_reservation.c | 2 | ||||
-rw-r--r-- | litmus/rt_domain.c | 16 |
6 files changed, 20 insertions, 36 deletions
diff --git a/include/litmus/litmus.h b/include/litmus/litmus.h index 2081fab6c825..d8f6d633e688 100644 --- a/include/litmus/litmus.h +++ b/include/litmus/litmus.h | |||
@@ -6,6 +6,7 @@ | |||
6 | #ifndef _LINUX_LITMUS_H_ | 6 | #ifndef _LINUX_LITMUS_H_ |
7 | #define _LINUX_LITMUS_H_ | 7 | #define _LINUX_LITMUS_H_ |
8 | 8 | ||
9 | #include <linux/sched.h> | ||
9 | #include <litmus/ctrlpage.h> | 10 | #include <litmus/ctrlpage.h> |
10 | 11 | ||
11 | #ifdef CONFIG_RELEASE_MASTER | 12 | #ifdef CONFIG_RELEASE_MASTER |
diff --git a/include/litmus/rt_domain.h b/include/litmus/rt_domain.h index 691e2c15556c..16f6b6cd6357 100644 --- a/include/litmus/rt_domain.h +++ b/include/litmus/rt_domain.h | |||
@@ -29,13 +29,11 @@ typedef struct _rt_domain { | |||
29 | 29 | ||
30 | /* real-time tasks waiting for release are in here */ | 30 | /* real-time tasks waiting for release are in here */ |
31 | raw_spinlock_t release_lock; | 31 | raw_spinlock_t release_lock; |
32 | struct release_queue release_queue; | 32 | struct release_queue release_queue; |
33 | 33 | ||
34 | #ifdef CONFIG_RELEASE_MASTER | 34 | #ifdef CONFIG_RELEASE_MASTER |
35 | int release_master; | 35 | int release_master; |
36 | /* used to delegate releases. | 36 | /* used to delegate releases */ |
37 | * does not appear to be assigned anywhere in Litmus | ||
38 | */ | ||
39 | struct hrtimer_start_on_info info; | 37 | struct hrtimer_start_on_info info; |
40 | #endif | 38 | #endif |
41 | 39 | ||
@@ -59,7 +57,8 @@ typedef struct _rt_domain { | |||
59 | struct release_heap { | 57 | struct release_heap { |
60 | /* for enqueueing into release_queue */ | 58 | /* for enqueueing into release_queue */ |
61 | struct binheap_node node; | 59 | struct binheap_node node; |
62 | struct list_head list; | 60 | /* list_head for per-time-slot list */ |
61 | struct list_head list; | ||
63 | lt_t release_time; | 62 | lt_t release_time; |
64 | /* all tasks to be released at release_time */ | 63 | /* all tasks to be released at release_time */ |
65 | struct bheap heap; | 64 | struct bheap heap; |
@@ -67,9 +66,6 @@ struct release_heap { | |||
67 | struct list_head list_head; | 66 | struct list_head list_head; |
68 | }; | 67 | }; |
69 | 68 | ||
70 | /* used to manually release jobs */ | ||
71 | void release_jobs_before_now(rt_domain_t* rt); | ||
72 | |||
73 | void domain_suspend_releases(rt_domain_t* rt); | 69 | void domain_suspend_releases(rt_domain_t* rt); |
74 | void domain_resume_releases(rt_domain_t* rt); | 70 | void domain_resume_releases(rt_domain_t* rt); |
75 | 71 | ||
@@ -100,9 +96,7 @@ void __merge_ready(rt_domain_t* rt, struct bheap *tasks); | |||
100 | void __add_release(rt_domain_t* rt, struct task_struct *task); | 96 | void __add_release(rt_domain_t* rt, struct task_struct *task); |
101 | 97 | ||
102 | void __add_ready_res(rt_domain_t* rt, struct reservation* new); | 98 | void __add_ready_res(rt_domain_t* rt, struct reservation* new); |
103 | void __merge_ready_res(rt_domain_t* rt, struct bheap *res); | ||
104 | void __add_release_res(rt_domain_t* rt, struct reservation* res); | 99 | void __add_release_res(rt_domain_t* rt, struct reservation* res); |
105 | void __add_release_res_no_timer(rt_domain_t* rt, struct reservation* res); | ||
106 | 100 | ||
107 | static inline struct task_struct* __take_ready(rt_domain_t* rt) | 101 | static inline struct task_struct* __take_ready(rt_domain_t* rt) |
108 | { | 102 | { |
@@ -146,7 +140,7 @@ static inline int is_queued(struct task_struct *t) | |||
146 | return bheap_node_in_heap(tsk_rt(t)->heap_node); | 140 | return bheap_node_in_heap(tsk_rt(t)->heap_node); |
147 | } | 141 | } |
148 | 142 | ||
149 | static inline int is_queued_res(struct reservation* res) | 143 | static inline int is_queued_res(struct reservation* res) |
150 | { | 144 | { |
151 | BUG_ON(!res->heap_node); | 145 | BUG_ON(!res->heap_node); |
152 | return bheap_node_in_heap(res->heap_node); | 146 | return bheap_node_in_heap(res->heap_node); |
@@ -192,7 +186,7 @@ static inline void merge_ready_res(rt_domain_t* rt, struct bheap* tasks) | |||
192 | { | 186 | { |
193 | unsigned long flags; | 187 | unsigned long flags; |
194 | raw_spin_lock_irqsave(&rt->ready_lock, flags); | 188 | raw_spin_lock_irqsave(&rt->ready_lock, flags); |
195 | __merge_ready_res(rt, tasks); | 189 | __merge_ready(rt, tasks); |
196 | raw_spin_unlock_irqrestore(&rt->ready_lock, flags); | 190 | raw_spin_unlock_irqrestore(&rt->ready_lock, flags); |
197 | } | 191 | } |
198 | 192 | ||
diff --git a/litmus/reservations/ext_reservation.c b/litmus/reservations/ext_reservation.c index a5c3b37a745b..3bedb0fbee04 100644 --- a/litmus/reservations/ext_reservation.c +++ b/litmus/reservations/ext_reservation.c | |||
@@ -1,10 +1,11 @@ | |||
1 | #include <linux/slab.h> | 1 | #include <linux/mm.h> |
2 | #include <litmus/litmus.h> | ||
2 | #include <litmus/bheap.h> | 3 | #include <litmus/bheap.h> |
4 | #include <litmus/rt_domain.h> | ||
3 | #include <litmus/reservations/ext_reservation.h> | 5 | #include <litmus/reservations/ext_reservation.h> |
4 | 6 | ||
5 | /* allocated in litmus.c */ | 7 | struct release_heap* release_heap_alloc(int gfp_flags); |
6 | extern struct kmem_cache* bheap_node_cache; | 8 | void release_heap_free(struct release_heap* rh); |
7 | extern struct kmem_cache* release_heap_cache; | ||
8 | 9 | ||
9 | int higher_res_prio(struct reservation* first, | 10 | int higher_res_prio(struct reservation* first, |
10 | struct reservation* second) | 11 | struct reservation* second) |
@@ -40,8 +41,8 @@ void init_ext_reservation( | |||
40 | { | 41 | { |
41 | res->id = id; | 42 | res->id = id; |
42 | res->ops = ops; | 43 | res->ops = ops; |
43 | res->heap_node = kmem_cache_alloc(bheap_node_cache, GFP_ATOMIC); | 44 | res->heap_node = bheap_node_alloc(GFP_ATOMIC); |
44 | res->rel_heap = kmem_cache_alloc(release_heap_cache, GFP_ATOMIC); | 45 | res->rel_heap = release_heap_alloc(GFP_ATOMIC); |
45 | bheap_node_init(&res->heap_node, res); | 46 | bheap_node_init(&res->heap_node, res); |
46 | INIT_LIST_HEAD(&res->ln); | 47 | INIT_LIST_HEAD(&res->ln); |
47 | INIT_LIST_HEAD(&res->all_list); | 48 | INIT_LIST_HEAD(&res->all_list); |
@@ -49,6 +50,6 @@ void init_ext_reservation( | |||
49 | 50 | ||
50 | void clean_up_ext_reservation(struct reservation* res) | 51 | void clean_up_ext_reservation(struct reservation* res) |
51 | { | 52 | { |
52 | kmem_cache_free(bheap_node_cache, res->heap_node); | 53 | bheap_node_free(res->heap_node); |
53 | kmem_cache_free(release_heap_cache, res->rel_heap); | 54 | release_heap_free(res->rel_heap); |
54 | } | 55 | } |
diff --git a/litmus/reservations/gedf_reservation.c b/litmus/reservations/gedf_reservation.c index 7b8162692903..771971d0af1b 100644 --- a/litmus/reservations/gedf_reservation.c +++ b/litmus/reservations/gedf_reservation.c | |||
@@ -700,7 +700,7 @@ static void gedf_env_release_jobs(rt_domain_t* rt, struct bheap* res) | |||
700 | = container_of(rt, struct gedf_reservation_environment, domain); | 700 | = container_of(rt, struct gedf_reservation_environment, domain); |
701 | 701 | ||
702 | raw_spin_lock_irqsave(&rt->ready_lock, flags); | 702 | raw_spin_lock_irqsave(&rt->ready_lock, flags); |
703 | __merge_ready_res(rt, res); | 703 | __merge_ready(rt, res); |
704 | check_for_preemptions(gedf_env); | 704 | check_for_preemptions(gedf_env); |
705 | raw_spin_unlock_irqrestore(&rt->ready_lock, flags); | 705 | raw_spin_unlock_irqrestore(&rt->ready_lock, flags); |
706 | } | 706 | } |
diff --git a/litmus/reservations/table_driven_ext_reservation.c b/litmus/reservations/table_driven_ext_reservation.c index 1170719c2e83..db9e38195248 100644 --- a/litmus/reservations/table_driven_ext_reservation.c +++ b/litmus/reservations/table_driven_ext_reservation.c | |||
@@ -411,7 +411,7 @@ static void mtd_env_release_jobs(rt_domain_t* rt, struct bheap* res) | |||
411 | unsigned long flags; | 411 | unsigned long flags; |
412 | 412 | ||
413 | raw_spin_lock_irqsave(&rt->ready_lock, flags); | 413 | raw_spin_lock_irqsave(&rt->ready_lock, flags); |
414 | __merge_ready_res(rt, res); | 414 | __merge_ready(rt, res); |
415 | litmus_reschedule_local(); | 415 | litmus_reschedule_local(); |
416 | raw_spin_unlock_irqrestore(&rt->ready_lock, flags); | 416 | raw_spin_unlock_irqrestore(&rt->ready_lock, flags); |
417 | } | 417 | } |
diff --git a/litmus/rt_domain.c b/litmus/rt_domain.c index db3a48bff0d0..80e01719884e 100644 --- a/litmus/rt_domain.c +++ b/litmus/rt_domain.c | |||
@@ -53,7 +53,7 @@ static void default_release_jobs(rt_domain_t* rt, struct bheap* tasks) | |||
53 | 53 | ||
54 | static unsigned int time2slot(lt_t time) | 54 | static unsigned int time2slot(lt_t time) |
55 | { | 55 | { |
56 | return (unsigned int) time2quanta(time, FLOOR) % RELEASE_QUEUE_SLOTS; | 56 | return (unsigned int) time2quanta(time, FLOOR) % RELEASE_QUEUE_SLOTS; |
57 | } | 57 | } |
58 | 58 | ||
59 | int release_order(struct binheap_node *a, struct binheap_node *b) | 59 | int release_order(struct binheap_node *a, struct binheap_node *b) |
@@ -503,15 +503,10 @@ void __merge_ready(rt_domain_t* rt, struct bheap* tasks) | |||
503 | rt->check_resched(rt); | 503 | rt->check_resched(rt); |
504 | } | 504 | } |
505 | 505 | ||
506 | void __merge_ready_res(rt_domain_t* rt, struct bheap* res) | ||
507 | { | ||
508 | bheap_union(rt->order, &rt->ready_queue, res); | ||
509 | rt->check_resched(rt); | ||
510 | } | ||
511 | 506 | ||
512 | #ifdef CONFIG_RELEASE_MASTER | 507 | #ifdef CONFIG_RELEASE_MASTER |
513 | void __add_release_on(rt_domain_t* rt, struct task_struct *task, | 508 | void __add_release_on(rt_domain_t* rt, struct task_struct *task, |
514 | int target_cpu) | 509 | int target_cpu) |
515 | { | 510 | { |
516 | TRACE_TASK(task, "add_release_on(), rel=%llu, target=%d\n", | 511 | TRACE_TASK(task, "add_release_on(), rel=%llu, target=%d\n", |
517 | get_release(task), target_cpu); | 512 | get_release(task), target_cpu); |
@@ -548,10 +543,3 @@ void __add_release_res(rt_domain_t* rt, struct reservation *res) | |||
548 | 543 | ||
549 | arm_release_timer_res(rt, 1); | 544 | arm_release_timer_res(rt, 1); |
550 | } | 545 | } |
551 | |||
552 | void __add_release_res_no_timer(rt_domain_t* rt, struct reservation* res) | ||
553 | { | ||
554 | list_add(&res->ln, &rt->tobe_released); | ||
555 | |||
556 | arm_release_timer_res(rt, 0); | ||
557 | } | ||