aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/interrupt.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/interrupt.h')
-rw-r--r--include/linux/interrupt.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index f6efed0039ed..9fc31289a1bb 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -445,6 +445,7 @@ static inline void __raise_softirq_irqoff(unsigned int nr)
445 445
446extern void raise_softirq_irqoff(unsigned int nr); 446extern void raise_softirq_irqoff(unsigned int nr);
447extern void raise_softirq(unsigned int nr); 447extern void raise_softirq(unsigned int nr);
448extern void wakeup_softirqd(void);
448 449
449/* This is the worklist that queues up per-cpu softirq work. 450/* This is the worklist that queues up per-cpu softirq work.
450 * 451 *
@@ -500,6 +501,16 @@ struct tasklet_struct
500 atomic_t count; 501 atomic_t count;
501 void (*func)(unsigned long); 502 void (*func)(unsigned long);
502 unsigned long data; 503 unsigned long data;
504
505#if defined(CONFIG_LITMUS_SOFTIRQD) || defined(CONFIG_LITMUS_PAI_SOFTIRQD)
506 struct task_struct *owner;
507#endif
508};
509
510struct tasklet_head
511{
512 struct tasklet_struct *head;
513 struct tasklet_struct **tail;
503}; 514};
504 515
505#define DECLARE_TASKLET(name, func, data) \ 516#define DECLARE_TASKLET(name, func, data) \
@@ -537,6 +548,7 @@ static inline void tasklet_unlock_wait(struct tasklet_struct *t)
537#define tasklet_unlock(t) do { } while (0) 548#define tasklet_unlock(t) do { } while (0)
538#endif 549#endif
539 550
551extern void ___tasklet_schedule(struct tasklet_struct *t);
540extern void __tasklet_schedule(struct tasklet_struct *t); 552extern void __tasklet_schedule(struct tasklet_struct *t);
541 553
542static inline void tasklet_schedule(struct tasklet_struct *t) 554static inline void tasklet_schedule(struct tasklet_struct *t)
@@ -545,6 +557,7 @@ static inline void tasklet_schedule(struct tasklet_struct *t)
545 __tasklet_schedule(t); 557 __tasklet_schedule(t);
546} 558}
547 559
560extern void ___tasklet_hi_schedule(struct tasklet_struct *t);
548extern void __tasklet_hi_schedule(struct tasklet_struct *t); 561extern void __tasklet_hi_schedule(struct tasklet_struct *t);
549 562
550static inline void tasklet_hi_schedule(struct tasklet_struct *t) 563static inline void tasklet_hi_schedule(struct tasklet_struct *t)
@@ -553,6 +566,7 @@ static inline void tasklet_hi_schedule(struct tasklet_struct *t)
553 __tasklet_hi_schedule(t); 566 __tasklet_hi_schedule(t);
554} 567}
555 568
569extern void ___tasklet_hi_schedule_first(struct tasklet_struct *t);
556extern void __tasklet_hi_schedule_first(struct tasklet_struct *t); 570extern void __tasklet_hi_schedule_first(struct tasklet_struct *t);
557 571
558/* 572/*
@@ -582,7 +596,7 @@ static inline void tasklet_disable(struct tasklet_struct *t)
582} 596}
583 597
584static inline void tasklet_enable(struct tasklet_struct *t) 598static inline void tasklet_enable(struct tasklet_struct *t)
585{ 599{
586 smp_mb__before_atomic_dec(); 600 smp_mb__before_atomic_dec();
587 atomic_dec(&t->count); 601 atomic_dec(&t->count);
588} 602}