diff options
Diffstat (limited to 'include/linux/interrupt.h')
| -rw-r--r-- | include/linux/interrupt.h | 28 | 
1 files changed, 28 insertions, 0 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 2721f07e935..35e7df1e9f3 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -14,6 +14,7 @@  #include <linux/irqflags.h>  #include <linux/smp.h>  #include <linux/percpu.h> +#include <linux/hrtimer.h>  #include <asm/atomic.h>  #include <asm/ptrace.h> @@ -64,11 +65,13 @@   * IRQTF_RUNTHREAD - signals that the interrupt handler thread should run   * IRQTF_DIED      - handler thread died   * IRQTF_WARNED    - warning "IRQ_WAKE_THREAD w/o thread_fn" has been printed + * IRQTF_AFFINITY  - irq thread is requested to adjust affinity   */  enum {  	IRQTF_RUNTHREAD,  	IRQTF_DIED,  	IRQTF_WARNED, +	IRQTF_AFFINITY,  };  typedef irqreturn_t (*irq_handler_t)(int, void *); @@ -517,6 +520,31 @@ extern void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int cpu);  extern void tasklet_init(struct tasklet_struct *t,  			 void (*func)(unsigned long), unsigned long data); +struct tasklet_hrtimer { +	struct hrtimer		timer; +	struct tasklet_struct	tasklet; +	enum hrtimer_restart	(*function)(struct hrtimer *); +}; + +extern void +tasklet_hrtimer_init(struct tasklet_hrtimer *ttimer, +		     enum hrtimer_restart (*function)(struct hrtimer *), +		     clockid_t which_clock, enum hrtimer_mode mode); + +static inline +int tasklet_hrtimer_start(struct tasklet_hrtimer *ttimer, ktime_t time, +			  const enum hrtimer_mode mode) +{ +	return hrtimer_start(&ttimer->timer, time, mode); +} + +static inline +void tasklet_hrtimer_cancel(struct tasklet_hrtimer *ttimer) +{ +	hrtimer_cancel(&ttimer->timer); +	tasklet_kill(&ttimer->tasklet); +} +  /*   * Autoprobing for irqs:   *  |