diff options
Diffstat (limited to 'litmus')
-rw-r--r-- | litmus/locking.c | 15 | ||||
-rw-r--r-- | litmus/sched_litmus.c | 5 |
2 files changed, 20 insertions, 0 deletions
diff --git a/litmus/locking.c b/litmus/locking.c index df7d0a939c08..43d9aece2e74 100644 --- a/litmus/locking.c +++ b/litmus/locking.c | |||
@@ -1,3 +1,5 @@ | |||
1 | #include <linux/sched.h> | ||
2 | #include <litmus/litmus.h> | ||
1 | #include <litmus/fdso.h> | 3 | #include <litmus/fdso.h> |
2 | 4 | ||
3 | #ifdef CONFIG_LITMUS_LOCKING | 5 | #ifdef CONFIG_LITMUS_LOCKING |
@@ -72,6 +74,10 @@ asmlinkage long sys_litmus_lock(int lock_od) | |||
72 | struct od_table_entry* entry; | 74 | struct od_table_entry* entry; |
73 | struct litmus_lock* l; | 75 | struct litmus_lock* l; |
74 | 76 | ||
77 | TS_SYSCALL_IN_START; | ||
78 | |||
79 | TS_SYSCALL_IN_END; | ||
80 | |||
75 | TS_LOCK_START; | 81 | TS_LOCK_START; |
76 | 82 | ||
77 | entry = get_entry_for_od(lock_od); | 83 | entry = get_entry_for_od(lock_od); |
@@ -85,6 +91,8 @@ asmlinkage long sys_litmus_lock(int lock_od) | |||
85 | * this into account when computing overheads. */ | 91 | * this into account when computing overheads. */ |
86 | TS_LOCK_END; | 92 | TS_LOCK_END; |
87 | 93 | ||
94 | TS_SYSCALL_OUT_START; | ||
95 | |||
88 | return err; | 96 | return err; |
89 | } | 97 | } |
90 | 98 | ||
@@ -94,6 +102,10 @@ asmlinkage long sys_litmus_unlock(int lock_od) | |||
94 | struct od_table_entry* entry; | 102 | struct od_table_entry* entry; |
95 | struct litmus_lock* l; | 103 | struct litmus_lock* l; |
96 | 104 | ||
105 | TS_SYSCALL_IN_START; | ||
106 | |||
107 | TS_SYSCALL_IN_END; | ||
108 | |||
97 | TS_UNLOCK_START; | 109 | TS_UNLOCK_START; |
98 | 110 | ||
99 | entry = get_entry_for_od(lock_od); | 111 | entry = get_entry_for_od(lock_od); |
@@ -107,6 +119,8 @@ asmlinkage long sys_litmus_unlock(int lock_od) | |||
107 | * account when computing overheads. */ | 119 | * account when computing overheads. */ |
108 | TS_UNLOCK_END; | 120 | TS_UNLOCK_END; |
109 | 121 | ||
122 | TS_SYSCALL_OUT_START; | ||
123 | |||
110 | return err; | 124 | return err; |
111 | } | 125 | } |
112 | 126 | ||
@@ -156,6 +170,7 @@ out: | |||
156 | return passed; | 170 | return passed; |
157 | } | 171 | } |
158 | 172 | ||
173 | |||
159 | #else | 174 | #else |
160 | 175 | ||
161 | struct fdso_ops generic_lock_ops = {}; | 176 | struct fdso_ops generic_lock_ops = {}; |
diff --git a/litmus/sched_litmus.c b/litmus/sched_litmus.c index 6553948407de..6b32cf09abbd 100644 --- a/litmus/sched_litmus.c +++ b/litmus/sched_litmus.c | |||
@@ -194,6 +194,9 @@ static void dequeue_task_litmus(struct rq *rq, struct task_struct *p, | |||
194 | 194 | ||
195 | static void yield_task_litmus(struct rq *rq) | 195 | static void yield_task_litmus(struct rq *rq) |
196 | { | 196 | { |
197 | TS_SYSCALL_IN_START; | ||
198 | TS_SYSCALL_IN_END; | ||
199 | |||
197 | BUG_ON(rq->curr != current); | 200 | BUG_ON(rq->curr != current); |
198 | /* sched_yield() is called to trigger delayed preemptions. | 201 | /* sched_yield() is called to trigger delayed preemptions. |
199 | * Thus, mark the current task as needing to be rescheduled. | 202 | * Thus, mark the current task as needing to be rescheduled. |
@@ -202,6 +205,8 @@ static void yield_task_litmus(struct rq *rq) | |||
202 | */ | 205 | */ |
203 | clear_exit_np(current); | 206 | clear_exit_np(current); |
204 | litmus_reschedule_local(); | 207 | litmus_reschedule_local(); |
208 | |||
209 | TS_SYSCALL_OUT_START; | ||
205 | } | 210 | } |
206 | 211 | ||
207 | /* Plugins are responsible for this. | 212 | /* Plugins are responsible for this. |