aboutsummaryrefslogtreecommitdiffstats
path: root/litmus/litmus_pai_softirq.c
diff options
context:
space:
mode:
Diffstat (limited to 'litmus/litmus_pai_softirq.c')
-rw-r--r--litmus/litmus_pai_softirq.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/litmus/litmus_pai_softirq.c b/litmus/litmus_pai_softirq.c
index 300571a81bbd..1ee5f73a2991 100644
--- a/litmus/litmus_pai_softirq.c
+++ b/litmus/litmus_pai_softirq.c
@@ -17,9 +17,29 @@
17#include <litmus/litmus_softirq.h> 17#include <litmus/litmus_softirq.h>
18 18
19 19
20static void __do_lit_tasklet(struct tasklet_struct* tasklet)
21{
22 if (!atomic_read(&tasklet->count)) {
23 if (!test_and_clear_bit(TASKLET_STATE_SCHED, &tasklet->state))
24 {
25 BUG();
26 }
27 TRACE("%s: Invoking tasklet with owner pid = %d (flushed = %d).\n",
28 __FUNCTION__,
29 (tasklet->owner) ? tasklet->owner->pid : -1,
30 (tasklet->owner) ? 0 : 1);
31 tasklet->func(tasklet->data);
32 tasklet_unlock(tasklet);
33 }
34 else {
35 BUG();
36 }
37}
38
20 39
21int __litmus_tasklet_schedule(struct tasklet_struct *t, unsigned int k_id) 40int __litmus_tasklet_schedule(struct tasklet_struct *t, unsigned int k_id)
22{ 41{
42#if 0
23 int ret = 0; /* assume failure */ 43 int ret = 0; /* assume failure */
24 if(unlikely((t->owner == NULL) || !is_realtime(t->owner))) 44 if(unlikely((t->owner == NULL) || !is_realtime(t->owner)))
25 { 45 {
@@ -28,8 +48,11 @@ int __litmus_tasklet_schedule(struct tasklet_struct *t, unsigned int k_id)
28 } 48 }
29 49
30 ret = litmus->enqueue_pai_tasklet(t); 50 ret = litmus->enqueue_pai_tasklet(t);
31
32 return(ret); 51 return(ret);
52#else
53 __do_lit_tasklet(t);
54 return(1);
55#endif
33} 56}
34 57
35EXPORT_SYMBOL(__litmus_tasklet_schedule); 58EXPORT_SYMBOL(__litmus_tasklet_schedule);