diff options
| author | Todd Kjos <tkjos@google.com> | 2017-05-29 16:44:24 -0700 |
|---|---|---|
| committer | Todd Kjos <tkjos@google.com> | 2017-07-13 15:16:33 +0000 |
| commit | b0f59d6d045c31a10cc0175fdb34ba5ae067b5b2 (patch) | |
| tree | 920840f1c957da38c2008cc61f2d304575e3e0be /tools/perf/scripts/python/call-graph-from-postgresql.py | |
| parent | 96dd75d9917402f0e3a8243c6152b2e5d662c37f (diff) | |
FROMLIST: binder: introduce locking helper functions
(from https://patchwork.kernel.org/patch/9817791/)
There are 3 main spinlocks which must be acquired in this
order:
1) proc->outer_lock : protects most fields of binder_proc,
binder_thread, and binder_ref structures. binder_proc_lock()
and binder_proc_unlock() are used to acq/rel.
2) node->lock : protects most fields of binder_node.
binder_node_lock() and binder_node_unlock() are
used to acq/rel
3) proc->inner_lock : protects the thread and node lists
(proc->threads, proc->nodes) and all todo lists associated
with the binder_proc (proc->todo, thread->todo,
proc->delivered_death and node->async_todo).
binder_inner_proc_lock() and binder_inner_proc_unlock()
are used to acq/rel
Any lock under procA must never be nested under any lock at the same
level or below on procB.
Functions that require a lock held on entry indicate which lock
in the suffix of the function name:
foo_olocked() : requires node->outer_lock
foo_nlocked() : requires node->lock
foo_ilocked() : requires proc->inner_lock
foo_iolocked(): requires proc->outer_lock and proc->inner_lock
foo_nilocked(): requires node->lock and proc->inner_lock
Change-Id: Ied42674486092a0e3bdde64356e45b2494844558
Signed-off-by: Todd Kjos <tkjos@google.com>
Diffstat (limited to 'tools/perf/scripts/python/call-graph-from-postgresql.py')
0 files changed, 0 insertions, 0 deletions
