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 6d93dce61cbb..2f245fe63bda 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h | |||
| @@ -47,14 +47,22 @@ enum hrtimer_restart { | |||
| 47 | * HRTIMER_CB_IRQSAFE: Callback may run in hardirq context | 47 | * HRTIMER_CB_IRQSAFE: Callback may run in hardirq context |
| 48 | * HRTIMER_CB_IRQSAFE_NO_RESTART: Callback may run in hardirq context and | 48 | * HRTIMER_CB_IRQSAFE_NO_RESTART: Callback may run in hardirq context and |
| 49 | * does not restart the timer | 49 | * does not restart the timer |
| 50 | * HRTIMER_CB_IRQSAFE_NO_SOFTIRQ: Callback must run in hardirq context | 50 | * HRTIMER_CB_IRQSAFE_PERCPU: Callback must run in hardirq context |
| 51 | * Special mode for tick emultation | 51 | * Special mode for tick emulation and |
| 52 | * scheduler timer. Such timers are per | ||
| 53 | * cpu and not allowed to be migrated on | ||
| 54 | * cpu unplug. | ||
| 55 | * HRTIMER_CB_IRQSAFE_UNLOCKED: Callback should run in hardirq context | ||
| 56 | * with timer->base lock unlocked | ||
| 57 | * used for timers which call wakeup to | ||
| 58 | * avoid lock order problems with rq->lock | ||
| 52 | */ | 59 | */ |
| 53 | enum hrtimer_cb_mode { | 60 | enum hrtimer_cb_mode { |
| 54 | HRTIMER_CB_SOFTIRQ, | 61 | HRTIMER_CB_SOFTIRQ, |
| 55 | HRTIMER_CB_IRQSAFE, | 62 | HRTIMER_CB_IRQSAFE, |
| 56 | HRTIMER_CB_IRQSAFE_NO_RESTART, | 63 | HRTIMER_CB_IRQSAFE_NO_RESTART, |
| 57 | HRTIMER_CB_IRQSAFE_NO_SOFTIRQ, | 64 | HRTIMER_CB_IRQSAFE_PERCPU, |
| 65 | HRTIMER_CB_IRQSAFE_UNLOCKED, | ||
| 58 | }; | 66 | }; |
| 59 | 67 | ||
| 60 | /* | 68 | /* |
| @@ -67,9 +75,10 @@ enum hrtimer_cb_mode { | |||
| 67 | * 0x02 callback function running | 75 | * 0x02 callback function running |
| 68 | * 0x04 callback pending (high resolution mode) | 76 | * 0x04 callback pending (high resolution mode) |
| 69 | * | 77 | * |
| 70 | * Special case: | 78 | * Special cases: |
| 71 | * 0x03 callback function running and enqueued | 79 | * 0x03 callback function running and enqueued |
| 72 | * (was requeued on another CPU) | 80 | * (was requeued on another CPU) |
| 81 | * 0x09 timer was migrated on CPU hotunplug | ||
| 73 | * The "callback function running and enqueued" status is only possible on | 82 | * The "callback function running and enqueued" status is only possible on |
| 74 | * SMP. It happens for example when a posix timer expired and the callback | 83 | * SMP. It happens for example when a posix timer expired and the callback |
| 75 | * queued a signal. Between dropping the lock which protects the posix timer | 84 | * queued a signal. Between dropping the lock which protects the posix timer |
| @@ -87,6 +96,7 @@ enum hrtimer_cb_mode { | |||
| 87 | #define HRTIMER_STATE_ENQUEUED 0x01 | 96 | #define HRTIMER_STATE_ENQUEUED 0x01 |
| 88 | #define HRTIMER_STATE_CALLBACK 0x02 | 97 | #define HRTIMER_STATE_CALLBACK 0x02 |
| 89 | #define HRTIMER_STATE_PENDING 0x04 | 98 | #define HRTIMER_STATE_PENDING 0x04 |
| 99 | #define HRTIMER_STATE_MIGRATE 0x08 | ||
| 90 | 100 | ||
| 91 | /** | 101 | /** |
| 92 | * struct hrtimer - the basic hrtimer structure | 102 | * struct hrtimer - the basic hrtimer structure |
