diff options
Diffstat (limited to 'include/linux/interrupt.h')
| -rw-r--r-- | include/linux/interrupt.h | 53 | 
1 files changed, 52 insertions, 1 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 1f22a30c0963..9367f1cb2e3c 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -329,7 +329,46 @@ extern int irq_force_affinity(unsigned int irq, const struct cpumask *cpumask);  extern int irq_can_set_affinity(unsigned int irq);  extern int irq_select_affinity(unsigned int irq); -extern int irq_set_affinity_hint(unsigned int irq, const struct cpumask *m); +extern int __irq_apply_affinity_hint(unsigned int irq, const struct cpumask *m, +				     bool setaffinity); + +/** + * irq_update_affinity_hint - Update the affinity hint + * @irq:	Interrupt to update + * @m:		cpumask pointer (NULL to clear the hint) + * + * Updates the affinity hint, but does not change the affinity of the interrupt. + */ +static inline int +irq_update_affinity_hint(unsigned int irq, const struct cpumask *m) +{ +	return __irq_apply_affinity_hint(irq, m, false); +} + +/** + * irq_set_affinity_and_hint - Update the affinity hint and apply the provided + *			     cpumask to the interrupt + * @irq:	Interrupt to update + * @m:		cpumask pointer (NULL to clear the hint) + * + * Updates the affinity hint and if @m is not NULL it applies it as the + * affinity of that interrupt. + */ +static inline int +irq_set_affinity_and_hint(unsigned int irq, const struct cpumask *m) +{ +	return __irq_apply_affinity_hint(irq, m, true); +} + +/* + * Deprecated. Use irq_update_affinity_hint() or irq_set_affinity_and_hint() + * instead. + */ +static inline int irq_set_affinity_hint(unsigned int irq, const struct cpumask *m) +{ +	return irq_set_affinity_and_hint(irq, m); +} +  extern int irq_update_affinity_desc(unsigned int irq,  				    struct irq_affinity_desc *affinity); @@ -361,6 +400,18 @@ static inline int irq_can_set_affinity(unsigned int irq)  static inline int irq_select_affinity(unsigned int irq)  { return 0; } +static inline int irq_update_affinity_hint(unsigned int irq, +					   const struct cpumask *m) +{ +	return -EINVAL; +} + +static inline int irq_set_affinity_and_hint(unsigned int irq, +					    const struct cpumask *m) +{ +	return -EINVAL; +} +  static inline int irq_set_affinity_hint(unsigned int irq,  					const struct cpumask *m)  {  |