.. | .. |
---|
58 | 58 | }; |
---|
59 | 59 | |
---|
60 | 60 | struct atomic_notifier_head { |
---|
61 | | - spinlock_t lock; |
---|
| 61 | + raw_spinlock_t lock; |
---|
62 | 62 | struct notifier_block __rcu *head; |
---|
63 | 63 | }; |
---|
64 | 64 | |
---|
.. | .. |
---|
78 | 78 | }; |
---|
79 | 79 | |
---|
80 | 80 | #define ATOMIC_INIT_NOTIFIER_HEAD(name) do { \ |
---|
81 | | - spin_lock_init(&(name)->lock); \ |
---|
| 81 | + raw_spin_lock_init(&(name)->lock); \ |
---|
82 | 82 | (name)->head = NULL; \ |
---|
83 | 83 | } while (0) |
---|
84 | 84 | #define BLOCKING_INIT_NOTIFIER_HEAD(name) do { \ |
---|
.. | .. |
---|
95 | 95 | cleanup_srcu_struct(&(name)->srcu); |
---|
96 | 96 | |
---|
97 | 97 | #define ATOMIC_NOTIFIER_INIT(name) { \ |
---|
98 | | - .lock = __SPIN_LOCK_UNLOCKED(name.lock), \ |
---|
| 98 | + .lock = __RAW_SPIN_LOCK_UNLOCKED(name.lock), \ |
---|
99 | 99 | .head = NULL } |
---|
100 | 100 | #define BLOCKING_NOTIFIER_INIT(name) { \ |
---|
101 | 101 | .rwsem = __RWSEM_INITIALIZER((name).rwsem), \ |
---|
.. | .. |
---|
150 | 150 | extern int srcu_notifier_chain_register(struct srcu_notifier_head *nh, |
---|
151 | 151 | struct notifier_block *nb); |
---|
152 | 152 | |
---|
153 | | -extern int blocking_notifier_chain_cond_register( |
---|
154 | | - struct blocking_notifier_head *nh, |
---|
155 | | - struct notifier_block *nb); |
---|
156 | | - |
---|
157 | 153 | extern int atomic_notifier_chain_unregister(struct atomic_notifier_head *nh, |
---|
158 | 154 | struct notifier_block *nb); |
---|
159 | 155 | extern int blocking_notifier_chain_unregister(struct blocking_notifier_head *nh, |
---|
.. | .. |
---|
165 | 161 | |
---|
166 | 162 | extern int atomic_notifier_call_chain(struct atomic_notifier_head *nh, |
---|
167 | 163 | unsigned long val, void *v); |
---|
168 | | -extern int __atomic_notifier_call_chain(struct atomic_notifier_head *nh, |
---|
169 | | - unsigned long val, void *v, int nr_to_call, int *nr_calls); |
---|
170 | 164 | extern int blocking_notifier_call_chain(struct blocking_notifier_head *nh, |
---|
171 | 165 | unsigned long val, void *v); |
---|
172 | | -extern int __blocking_notifier_call_chain(struct blocking_notifier_head *nh, |
---|
173 | | - unsigned long val, void *v, int nr_to_call, int *nr_calls); |
---|
174 | 166 | extern int raw_notifier_call_chain(struct raw_notifier_head *nh, |
---|
175 | 167 | unsigned long val, void *v); |
---|
176 | | -extern int __raw_notifier_call_chain(struct raw_notifier_head *nh, |
---|
177 | | - unsigned long val, void *v, int nr_to_call, int *nr_calls); |
---|
178 | 168 | extern int srcu_notifier_call_chain(struct srcu_notifier_head *nh, |
---|
179 | 169 | unsigned long val, void *v); |
---|
180 | | -extern int __srcu_notifier_call_chain(struct srcu_notifier_head *nh, |
---|
181 | | - unsigned long val, void *v, int nr_to_call, int *nr_calls); |
---|
| 170 | + |
---|
| 171 | +extern int atomic_notifier_call_chain_robust(struct atomic_notifier_head *nh, |
---|
| 172 | + unsigned long val_up, unsigned long val_down, void *v); |
---|
| 173 | +extern int blocking_notifier_call_chain_robust(struct blocking_notifier_head *nh, |
---|
| 174 | + unsigned long val_up, unsigned long val_down, void *v); |
---|
| 175 | +extern int raw_notifier_call_chain_robust(struct raw_notifier_head *nh, |
---|
| 176 | + unsigned long val_up, unsigned long val_down, void *v); |
---|
182 | 177 | |
---|
183 | 178 | #define NOTIFY_DONE 0x0000 /* Don't care */ |
---|
184 | 179 | #define NOTIFY_OK 0x0001 /* Suits me */ |
---|