diff options
| author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2008-12-04 03:00:17 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-12-04 04:08:18 -0500 |
| commit | 00ef9f7348dfd2fc223ec42aceb30836e86b367f (patch) | |
| tree | 14c33d878bec717179a6916232e118dbfbf7d65f /include | |
| parent | cb9c34e6d090d376b77becaa5d29a65dec7f4272 (diff) | |
lockdep: change a held lock's class
Impact: introduce new lockdep API
Allow to change a held lock's class. Basically the same as the existing
code to change a subclass therefore reuse all that.
The XFS code will be able to use this to annotate their inode locking.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/lockdep.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h index 8956daf64abd..37a0361f4685 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h | |||
| @@ -314,8 +314,15 @@ extern void lock_acquire(struct lockdep_map *lock, unsigned int subclass, | |||
| 314 | extern void lock_release(struct lockdep_map *lock, int nested, | 314 | extern void lock_release(struct lockdep_map *lock, int nested, |
| 315 | unsigned long ip); | 315 | unsigned long ip); |
| 316 | 316 | ||
| 317 | extern void lock_set_subclass(struct lockdep_map *lock, unsigned int subclass, | 317 | extern void lock_set_class(struct lockdep_map *lock, const char *name, |
| 318 | unsigned long ip); | 318 | struct lock_class_key *key, unsigned int subclass, |
| 319 | unsigned long ip); | ||
| 320 | |||
| 321 | static inline void lock_set_subclass(struct lockdep_map *lock, | ||
| 322 | unsigned int subclass, unsigned long ip) | ||
| 323 | { | ||
| 324 | lock_set_class(lock, lock->name, lock->key, subclass, ip); | ||
| 325 | } | ||
| 319 | 326 | ||
| 320 | # define INIT_LOCKDEP .lockdep_recursion = 0, | 327 | # define INIT_LOCKDEP .lockdep_recursion = 0, |
| 321 | 328 | ||
| @@ -333,6 +340,7 @@ static inline void lockdep_on(void) | |||
| 333 | 340 | ||
| 334 | # define lock_acquire(l, s, t, r, c, n, i) do { } while (0) | 341 | # define lock_acquire(l, s, t, r, c, n, i) do { } while (0) |
| 335 | # define lock_release(l, n, i) do { } while (0) | 342 | # define lock_release(l, n, i) do { } while (0) |
| 343 | # define lock_set_class(l, n, k, s, i) do { } while (0) | ||
| 336 | # define lock_set_subclass(l, s, i) do { } while (0) | 344 | # define lock_set_subclass(l, s, i) do { } while (0) |
| 337 | # define lockdep_init() do { } while (0) | 345 | # define lockdep_init() do { } while (0) |
| 338 | # define lockdep_info() do { } while (0) | 346 | # define lockdep_info() do { } while (0) |
