aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Bakita <jbakita@cs.unc.edu>2020-10-14 21:29:28 -0400
committerJoshua Bakita <jbakita@cs.unc.edu>2020-10-14 21:29:28 -0400
commit6e3c78374e56bbdfb5e8d91c956701d061ecc9a7 (patch)
tree36c5335170a38a1d90774c16c4d201254f6413b8
parent8a29b56fcc329454274d5d135659935e706af7cc (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.h1
-rw-r--r--include/litmus/rt_domain.h18
-rw-r--r--litmus/reservations/ext_reservation.c17
-rw-r--r--litmus/reservations/gedf_reservation.c2
-rw-r--r--litmus/reservations/table_driven_ext_reservation.c2
-rw-r--r--litmus/rt_domain.c16
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 {
59struct release_heap { 57struct 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 */
71void release_jobs_before_now(rt_domain_t* rt);
72
73void domain_suspend_releases(rt_domain_t* rt); 69void domain_suspend_releases(rt_domain_t* rt);
74void domain_resume_releases(rt_domain_t* rt); 70void domain_resume_releases(rt_domain_t* rt);
75 71
@@ -100,9 +96,7 @@ void __merge_ready(rt_domain_t* rt, struct bheap *tasks);
100void __add_release(rt_domain_t* rt, struct task_struct *task); 96void __add_release(rt_domain_t* rt, struct task_struct *task);
101 97
102void __add_ready_res(rt_domain_t* rt, struct reservation* new); 98void __add_ready_res(rt_domain_t* rt, struct reservation* new);
103void __merge_ready_res(rt_domain_t* rt, struct bheap *res);
104void __add_release_res(rt_domain_t* rt, struct reservation* res); 99void __add_release_res(rt_domain_t* rt, struct reservation* res);
105void __add_release_res_no_timer(rt_domain_t* rt, struct reservation* res);
106 100
107static inline struct task_struct* __take_ready(rt_domain_t* rt) 101static 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
149static inline int is_queued_res(struct reservation* res) 143static 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 */ 7struct release_heap* release_heap_alloc(int gfp_flags);
6extern struct kmem_cache* bheap_node_cache; 8void release_heap_free(struct release_heap* rh);
7extern struct kmem_cache* release_heap_cache;
8 9
9int higher_res_prio(struct reservation* first, 10int 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
50void clean_up_ext_reservation(struct reservation* res) 51void 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
54static unsigned int time2slot(lt_t time) 54static 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
59int release_order(struct binheap_node *a, struct binheap_node *b) 59int 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
506void __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
513void __add_release_on(rt_domain_t* rt, struct task_struct *task, 508void __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
552void __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}