summaryrefslogtreecommitdiffstats
path: root/include/linux/lockdep.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-05-16 17:47:16 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-05-16 17:47:16 -0400
commit825a3b2605c3aa193e0075d0f9c72e33c17ab16a (patch)
treee8665c4cc20076ae53165475839d36b4bc641cd3 /include/linux/lockdep.h
parentcf6ed9a6682d3f171cf9550d4bbe0ef31b768a7e (diff)
parentef0491ea17f8019821c7e9c8e801184ecf17f85a (diff)
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler updates from Ingo Molnar: - massive CPU hotplug rework (Thomas Gleixner) - improve migration fairness (Peter Zijlstra) - CPU load calculation updates/cleanups (Yuyang Du) - cpufreq updates (Steve Muckle) - nohz optimizations (Frederic Weisbecker) - switch_mm() micro-optimization on x86 (Andy Lutomirski) - ... lots of other enhancements, fixes and cleanups. * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (66 commits) ARM: Hide finish_arch_post_lock_switch() from modules sched/core: Provide a tsk_nr_cpus_allowed() helper sched/core: Use tsk_cpus_allowed() instead of accessing ->cpus_allowed sched/loadavg: Fix loadavg artifacts on fully idle and on fully loaded systems sched/fair: Correct unit of load_above_capacity sched/fair: Clean up scale confusion sched/nohz: Fix affine unpinned timers mess sched/fair: Fix fairness issue on migration sched/core: Kill sched_class::task_waking to clean up the migration logic sched/fair: Prepare to fix fairness problems on migration sched/fair: Move record_wakee() sched/core: Fix comment typo in wake_q_add() sched/core: Remove unused variable sched: Make hrtick_notifier an explicit call sched/fair: Make ilb_notifier an explicit call sched/hotplug: Make activate() the last hotplug step sched/hotplug: Move migration CPU_DYING to sched_cpu_dying() sched/migration: Move CPU_ONLINE into scheduler state sched/migration: Move calc_load_migrate() into CPU_DYING sched/migration: Move prepare transition to SCHED_STARTING state ...
Diffstat (limited to 'include/linux/lockdep.h')
-rw-r--r--include/linux/lockdep.h23
1 files changed, 17 insertions, 6 deletions
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
index f75222ea7f16..eabe0138eb06 100644
--- a/include/linux/lockdep.h
+++ b/include/linux/lockdep.h
@@ -356,8 +356,13 @@ extern void lockdep_set_current_reclaim_state(gfp_t gfp_mask);
356extern void lockdep_clear_current_reclaim_state(void); 356extern void lockdep_clear_current_reclaim_state(void);
357extern void lockdep_trace_alloc(gfp_t mask); 357extern void lockdep_trace_alloc(gfp_t mask);
358 358
359extern void lock_pin_lock(struct lockdep_map *lock); 359struct pin_cookie { unsigned int val; };
360extern void lock_unpin_lock(struct lockdep_map *lock); 360
361#define NIL_COOKIE (struct pin_cookie){ .val = 0U, }
362
363extern struct pin_cookie lock_pin_lock(struct lockdep_map *lock);
364extern void lock_repin_lock(struct lockdep_map *lock, struct pin_cookie);
365extern void lock_unpin_lock(struct lockdep_map *lock, struct pin_cookie);
361 366
362# define INIT_LOCKDEP .lockdep_recursion = 0, .lockdep_reclaim_gfp = 0, 367# define INIT_LOCKDEP .lockdep_recursion = 0, .lockdep_reclaim_gfp = 0,
363 368
@@ -373,8 +378,9 @@ extern void lock_unpin_lock(struct lockdep_map *lock);
373 378
374#define lockdep_recursing(tsk) ((tsk)->lockdep_recursion) 379#define lockdep_recursing(tsk) ((tsk)->lockdep_recursion)
375 380
376#define lockdep_pin_lock(l) lock_pin_lock(&(l)->dep_map) 381#define lockdep_pin_lock(l) lock_pin_lock(&(l)->dep_map)
377#define lockdep_unpin_lock(l) lock_unpin_lock(&(l)->dep_map) 382#define lockdep_repin_lock(l,c) lock_repin_lock(&(l)->dep_map, (c))
383#define lockdep_unpin_lock(l,c) lock_unpin_lock(&(l)->dep_map, (c))
378 384
379#else /* !CONFIG_LOCKDEP */ 385#else /* !CONFIG_LOCKDEP */
380 386
@@ -427,8 +433,13 @@ struct lock_class_key { };
427 433
428#define lockdep_recursing(tsk) (0) 434#define lockdep_recursing(tsk) (0)
429 435
430#define lockdep_pin_lock(l) do { (void)(l); } while (0) 436struct pin_cookie { };
431#define lockdep_unpin_lock(l) do { (void)(l); } while (0) 437
438#define NIL_COOKIE (struct pin_cookie){ }
439
440#define lockdep_pin_lock(l) ({ struct pin_cookie cookie; cookie; })
441#define lockdep_repin_lock(l, c) do { (void)(l); (void)(c); } while (0)
442#define lockdep_unpin_lock(l, c) do { (void)(l); (void)(c); } while (0)
432 443
433#endif /* !LOCKDEP */ 444#endif /* !LOCKDEP */
434 445