diff options
Diffstat (limited to 'include/linux/hrtimer.h')
| -rw-r--r-- | include/linux/hrtimer.h | 18 | 
1 files changed, 14 insertions, 4 deletions
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h index 1e6f731381d..cb25c1cc235 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h @@ -49,14 +49,22 @@ enum hrtimer_restart {   *	HRTIMER_CB_IRQSAFE:		Callback may run in hardirq context   *	HRTIMER_CB_IRQSAFE_NO_RESTART:	Callback may run in hardirq context and   *					does not restart the timer - *	HRTIMER_CB_IRQSAFE_NO_SOFTIRQ:	Callback must run in hardirq context - *					Special mode for tick emultation + *	HRTIMER_CB_IRQSAFE_PERCPU:	Callback must run in hardirq context + *					Special mode for tick emulation and + *					scheduler timer. Such timers are per + *					cpu and not allowed to be migrated on + *					cpu unplug. + *	HRTIMER_CB_IRQSAFE_UNLOCKED:	Callback should run in hardirq context + *					with timer->base lock unlocked + *					used for timers which call wakeup to + *					avoid lock order problems with rq->lock   */  enum hrtimer_cb_mode {  	HRTIMER_CB_SOFTIRQ,  	HRTIMER_CB_IRQSAFE,  	HRTIMER_CB_IRQSAFE_NO_RESTART, -	HRTIMER_CB_IRQSAFE_NO_SOFTIRQ, +	HRTIMER_CB_IRQSAFE_PERCPU, +	HRTIMER_CB_IRQSAFE_UNLOCKED,  };  /* @@ -69,9 +77,10 @@ enum hrtimer_cb_mode {   * 0x02		callback function running   * 0x04		callback pending (high resolution mode)   * - * Special case: + * Special cases:   * 0x03		callback function running and enqueued   *		(was requeued on another CPU) + * 0x09		timer was migrated on CPU hotunplug   * The "callback function running and enqueued" status is only possible on   * SMP. It happens for example when a posix timer expired and the callback   * queued a signal. Between dropping the lock which protects the posix timer @@ -89,6 +98,7 @@ enum hrtimer_cb_mode {  #define HRTIMER_STATE_ENQUEUED	0x01  #define HRTIMER_STATE_CALLBACK	0x02  #define HRTIMER_STATE_PENDING	0x04 +#define HRTIMER_STATE_MIGRATE	0x08  /**   * struct hrtimer - the basic hrtimer structure  |