diff options
author | Thomas Gleixner <[email protected]> | 2014-06-11 20:45:41 +0000 |
---|---|---|
committer | Thomas Gleixner <[email protected]> | 2014-06-21 22:26:24 +0200 |
commit | af54d6a1c3ad474bbc9893c9905022646be6092c (patch) | |
tree | 462e3a75dcc8858a272099bcf449c35f5ecea141 /tools/perf/scripts | |
parent | 04e1b2e52b17195c9a1daa5935c55a4c8716095c (diff) |
futex: Simplify futex_lock_pi_atomic() and make it more robust
futex_lock_pi_atomic() is a maze of retry hoops and loops.
Reduce it to simple and understandable states:
First step is to lookup existing waiters (state) in the kernel.
If there is an existing waiter, validate it and attach to it.
If there is no existing waiter, check the user space value
If the TID encoded in the user space value is 0, take over the futex
preserving the owner died bit.
If the TID encoded in the user space value is != 0, lookup the owner
task, validate it and attach to it.
Reduces text size by 128 bytes on x8664.
Signed-off-by: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Davidlohr Bueso <[email protected]>
Cc: Kees Cook <[email protected]>
Cc: [email protected]
Cc: Darren Hart <[email protected]>
Link: http://lkml.kernel.org/r/alpine.DEB.2.10.1406131137020.5170@nanos
Signed-off-by: Thomas Gleixner <[email protected]>
Diffstat (limited to 'tools/perf/scripts')
0 files changed, 0 insertions, 0 deletions