diff options
author | Peter Zijlstra <[email protected]> | 2015-09-28 17:52:18 +0200 |
---|---|---|
committer | Ingo Molnar <[email protected]> | 2015-10-06 17:08:14 +0200 |
commit | 609ca066386b2e64d4c0b0f55da327654962a0c9 (patch) | |
tree | 11b4faacc00bbc39d967374df633f6c352ce199b /tools/perf/util/trace-event-scripting.c | |
parent | b99def8b961448f5b9a550dddeeb718e3975e7a6 (diff) |
sched/core: Create preempt_count invariant
Assuming units of PREEMPT_DISABLE_OFFSET for preempt_count() numbers.
Now that TASK_DEAD no longer results in preempt_count() == 3 during
scheduling, we will always call context_switch() with preempt_count()
== 2.
However, we don't always end up with preempt_count() == 2 in
finish_task_switch() because new tasks get created with
preempt_count() == 1.
Create FORK_PREEMPT_COUNT and set it to 2 and use that in the right
places. Note that we cannot use INIT_PREEMPT_COUNT as that serves
another purpose (boot).
After this, preempt_count() is invariant across the context switch,
with exception of PREEMPT_ACTIVE.
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'tools/perf/util/trace-event-scripting.c')
0 files changed, 0 insertions, 0 deletions