From: Sasha Levin <sasha.levin@oracle.com>
To: torvalds@linux-foundation.org
Cc: mingo@kernel.org, peterz@infradead.org,
linux-kernel@vger.kernel.org,
Sasha Levin <sasha.levin@oracle.com>
Subject: [Patch v5 0/9] liblockdep: userspace lockdep
Date: Thu, 13 Jun 2013 18:41:15 -0400 [thread overview]
Message-ID: <1371163284-6346-1-git-send-email-sasha.levin@oracle.com> (raw)
liblockdep is a tiny wrapper built around kernel/lockdep.c. The aim is to
provide the same functionality the kernel gets from lockdep to userspace.
The bulk of the code here is the LD_PRELOAD support which provides users
an easy way to test their code without having to integrate liblockdep into
said code. Simply doing:
lockdep my_app
Would provide lockdep support to my_app.
There is also a small test suite to test both mutexes and rwlocks, it's
based on the tests in lib/locking-selftest.c.
This entire patch series was reviewed by lockdep maintainers and accepted to
the tip tree previously. It was pulled out so that the potential merge of
liblockdep won't delay the rest of the commits in the tip locking tree.
For some more background about this entire thing, the folks at LWN did
an awesome overview: http://lwn.net/Articles/536363/
Changes from v4:
- Build issue on Ubuntu.
- More work from Peter.
Changes from v3:
- More fixes/suggestions/code from Peter.
Changes from v2:
- Fix possible build breakage due to recent changes to kernel/lockdep.c
Changes from v1:
- Addressed Peter's comments.
Sasha Levin (9):
lockdep: Be nice about building from userspace
liblockdep: Wrap kernel/lockdep.c to allow usage from userspace
liblockdep: Add public headers for pthread_mutex_t implementation
liblockdep: Add pthread_mutex_t test suite
liblockdep: Add public headers for pthread_rwlock_t implementation
liblockdep: Add pthread_rwlock_t test suite
liblockdep: Support using LD_PRELOAD
liblockdep: Add the 'lockdep' user-space utility
liblockdep: Add a MAINTAINERS entry
MAINTAINERS | 5 +
kernel/lockdep.c | 4 +
tools/lib/lockdep/Makefile | 251 ++++++++++++
tools/lib/lockdep/common.c | 33 ++
tools/lib/lockdep/include/liblockdep/common.h | 50 +++
tools/lib/lockdep/include/liblockdep/mutex.h | 70 ++++
tools/lib/lockdep/include/liblockdep/rwlock.h | 86 ++++
tools/lib/lockdep/lockdep | 3 +
tools/lib/lockdep/lockdep.c | 2 +
tools/lib/lockdep/lockdep_internals.h | 1 +
tools/lib/lockdep/lockdep_states.h | 1 +
tools/lib/lockdep/preload.c | 447 +++++++++++++++++++++
tools/lib/lockdep/rbtree.c | 1 +
tools/lib/lockdep/run_tests.sh | 27 ++
tools/lib/lockdep/tests/AA.c | 13 +
tools/lib/lockdep/tests/ABBA.c | 13 +
tools/lib/lockdep/tests/ABBCCA.c | 15 +
tools/lib/lockdep/tests/ABBCCDDA.c | 17 +
tools/lib/lockdep/tests/ABCABC.c | 15 +
tools/lib/lockdep/tests/ABCDBCDA.c | 17 +
tools/lib/lockdep/tests/ABCDBDDA.c | 17 +
tools/lib/lockdep/tests/WW.c | 13 +
tools/lib/lockdep/tests/common.h | 12 +
tools/lib/lockdep/tests/unlock_balance.c | 12 +
tools/lib/lockdep/uinclude/asm/hweight.h | 0
tools/lib/lockdep/uinclude/asm/sections.h | 0
tools/lib/lockdep/uinclude/linux/bitops.h | 0
tools/lib/lockdep/uinclude/linux/compiler.h | 7 +
tools/lib/lockdep/uinclude/linux/debug_locks.h | 12 +
tools/lib/lockdep/uinclude/linux/delay.h | 0
tools/lib/lockdep/uinclude/linux/export.h | 7 +
tools/lib/lockdep/uinclude/linux/ftrace.h | 0
tools/lib/lockdep/uinclude/linux/gfp.h | 0
tools/lib/lockdep/uinclude/linux/hardirq.h | 11 +
tools/lib/lockdep/uinclude/linux/hash.h | 1 +
tools/lib/lockdep/uinclude/linux/interrupt.h | 0
tools/lib/lockdep/uinclude/linux/irqflags.h | 38 ++
tools/lib/lockdep/uinclude/linux/kallsyms.h | 32 ++
tools/lib/lockdep/uinclude/linux/kern_levels.h | 25 ++
tools/lib/lockdep/uinclude/linux/kernel.h | 44 ++
tools/lib/lockdep/uinclude/linux/kmemcheck.h | 8 +
tools/lib/lockdep/uinclude/linux/linkage.h | 0
tools/lib/lockdep/uinclude/linux/list.h | 1 +
tools/lib/lockdep/uinclude/linux/lockdep.h | 55 +++
tools/lib/lockdep/uinclude/linux/mm_types.h | 0
tools/lib/lockdep/uinclude/linux/module.h | 6 +
tools/lib/lockdep/uinclude/linux/mutex.h | 0
tools/lib/lockdep/uinclude/linux/poison.h | 1 +
tools/lib/lockdep/uinclude/linux/prefetch.h | 6 +
tools/lib/lockdep/uinclude/linux/proc_fs.h | 0
tools/lib/lockdep/uinclude/linux/rbtree.h | 1 +
.../lib/lockdep/uinclude/linux/rbtree_augmented.h | 2 +
tools/lib/lockdep/uinclude/linux/rcu.h | 16 +
tools/lib/lockdep/uinclude/linux/seq_file.h | 0
tools/lib/lockdep/uinclude/linux/spinlock.h | 25 ++
tools/lib/lockdep/uinclude/linux/stacktrace.h | 32 ++
tools/lib/lockdep/uinclude/linux/stringify.h | 7 +
tools/lib/lockdep/uinclude/linux/system.h | 0
tools/lib/lockdep/uinclude/linux/types.h | 58 +++
tools/lib/lockdep/uinclude/linux/util.h | 0
tools/lib/lockdep/uinclude/trace/events/lock.h | 0
61 files changed, 1520 insertions(+)
create mode 100644 tools/lib/lockdep/Makefile
create mode 100644 tools/lib/lockdep/common.c
create mode 100644 tools/lib/lockdep/include/liblockdep/common.h
create mode 100644 tools/lib/lockdep/include/liblockdep/mutex.h
create mode 100644 tools/lib/lockdep/include/liblockdep/rwlock.h
create mode 100755 tools/lib/lockdep/lockdep
create mode 100644 tools/lib/lockdep/lockdep.c
create mode 100644 tools/lib/lockdep/lockdep_internals.h
create mode 100644 tools/lib/lockdep/lockdep_states.h
create mode 100644 tools/lib/lockdep/preload.c
create mode 100644 tools/lib/lockdep/rbtree.c
create mode 100755 tools/lib/lockdep/run_tests.sh
create mode 100644 tools/lib/lockdep/tests/AA.c
create mode 100644 tools/lib/lockdep/tests/ABBA.c
create mode 100644 tools/lib/lockdep/tests/ABBCCA.c
create mode 100644 tools/lib/lockdep/tests/ABBCCDDA.c
create mode 100644 tools/lib/lockdep/tests/ABCABC.c
create mode 100644 tools/lib/lockdep/tests/ABCDBCDA.c
create mode 100644 tools/lib/lockdep/tests/ABCDBDDA.c
create mode 100644 tools/lib/lockdep/tests/WW.c
create mode 100644 tools/lib/lockdep/tests/common.h
create mode 100644 tools/lib/lockdep/tests/unlock_balance.c
create mode 100644 tools/lib/lockdep/uinclude/asm/hweight.h
create mode 100644 tools/lib/lockdep/uinclude/asm/sections.h
create mode 100644 tools/lib/lockdep/uinclude/linux/bitops.h
create mode 100644 tools/lib/lockdep/uinclude/linux/compiler.h
create mode 100644 tools/lib/lockdep/uinclude/linux/debug_locks.h
create mode 100644 tools/lib/lockdep/uinclude/linux/delay.h
create mode 100644 tools/lib/lockdep/uinclude/linux/export.h
create mode 100644 tools/lib/lockdep/uinclude/linux/ftrace.h
create mode 100644 tools/lib/lockdep/uinclude/linux/gfp.h
create mode 100644 tools/lib/lockdep/uinclude/linux/hardirq.h
create mode 100644 tools/lib/lockdep/uinclude/linux/hash.h
create mode 100644 tools/lib/lockdep/uinclude/linux/interrupt.h
create mode 100644 tools/lib/lockdep/uinclude/linux/irqflags.h
create mode 100644 tools/lib/lockdep/uinclude/linux/kallsyms.h
create mode 100644 tools/lib/lockdep/uinclude/linux/kern_levels.h
create mode 100644 tools/lib/lockdep/uinclude/linux/kernel.h
create mode 100644 tools/lib/lockdep/uinclude/linux/kmemcheck.h
create mode 100644 tools/lib/lockdep/uinclude/linux/linkage.h
create mode 100644 tools/lib/lockdep/uinclude/linux/list.h
create mode 100644 tools/lib/lockdep/uinclude/linux/lockdep.h
create mode 100644 tools/lib/lockdep/uinclude/linux/mm_types.h
create mode 100644 tools/lib/lockdep/uinclude/linux/module.h
create mode 100644 tools/lib/lockdep/uinclude/linux/mutex.h
create mode 100644 tools/lib/lockdep/uinclude/linux/poison.h
create mode 100644 tools/lib/lockdep/uinclude/linux/prefetch.h
create mode 100644 tools/lib/lockdep/uinclude/linux/proc_fs.h
create mode 100644 tools/lib/lockdep/uinclude/linux/rbtree.h
create mode 100644 tools/lib/lockdep/uinclude/linux/rbtree_augmented.h
create mode 100644 tools/lib/lockdep/uinclude/linux/rcu.h
create mode 100644 tools/lib/lockdep/uinclude/linux/seq_file.h
create mode 100644 tools/lib/lockdep/uinclude/linux/spinlock.h
create mode 100644 tools/lib/lockdep/uinclude/linux/stacktrace.h
create mode 100644 tools/lib/lockdep/uinclude/linux/stringify.h
create mode 100644 tools/lib/lockdep/uinclude/linux/system.h
create mode 100644 tools/lib/lockdep/uinclude/linux/types.h
create mode 100644 tools/lib/lockdep/uinclude/linux/util.h
create mode 100644 tools/lib/lockdep/uinclude/trace/events/lock.h
--
1.8.1.2
next reply other threads:[~2013-06-13 22:42 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-13 22:41 Sasha Levin [this message]
2013-06-13 22:41 ` [Patch v5 1/9] lockdep: Be nice about building from userspace Sasha Levin
2013-06-13 22:41 ` [Patch v5 2/9] liblockdep: Wrap kernel/lockdep.c to allow usage " Sasha Levin
2013-11-27 14:08 ` [tip:core/locking] liblockdep: Wrap kernel/locking/ lockdep.c " tip-bot for Sasha Levin
2013-06-13 22:41 ` [Patch v5 3/9] liblockdep: Add public headers for pthread_mutex_t implementation Sasha Levin
2013-11-27 14:08 ` [tip:core/locking] " tip-bot for Sasha Levin
2013-06-13 22:41 ` [Patch v5 4/9] liblockdep: Add pthread_mutex_t test suite Sasha Levin
2013-11-27 14:08 ` [tip:core/locking] " tip-bot for Sasha Levin
2013-06-13 22:41 ` [Patch v5 5/9] liblockdep: Add public headers for pthread_rwlock_t implementation Sasha Levin
2013-11-27 14:09 ` [tip:core/locking] " tip-bot for Sasha Levin
2013-06-13 22:41 ` [Patch v5 6/9] liblockdep: Add pthread_rwlock_t test suite Sasha Levin
2013-11-27 14:09 ` [tip:core/locking] " tip-bot for Sasha Levin
2013-06-13 22:41 ` [Patch v5 7/9] liblockdep: Support using LD_PRELOAD Sasha Levin
2013-11-27 14:09 ` [tip:core/locking] " tip-bot for Sasha Levin
2013-06-13 22:41 ` [Patch v5 8/9] liblockdep: Add the 'lockdep' user-space utility Sasha Levin
2013-11-27 14:09 ` [tip:core/locking] " tip-bot for Sasha Levin
2013-06-13 22:41 ` [Patch v5 9/9] liblockdep: Add a MAINTAINERS entry Sasha Levin
2013-11-27 14:09 ` [tip:core/locking] " tip-bot for Sasha Levin
2013-06-26 12:24 ` [Patch v5 0/9] liblockdep: userspace lockdep Peter Zijlstra
2013-06-26 15:53 ` Ingo Molnar
2013-06-26 19:38 ` Sasha Levin
2013-06-27 9:05 ` Ingo Molnar
2013-06-27 9:07 ` Ingo Molnar
2013-06-27 13:55 ` Sasha Levin
2013-07-08 1:14 ` Sasha Levin
2013-07-08 8:39 ` Ingo Molnar
2013-09-12 17:40 ` Sasha Levin
2013-09-12 18:01 ` Ingo Molnar
2013-09-14 16:59 ` Sasha Levin
2013-11-08 17:04 ` Sasha Levin
2013-11-09 16:01 ` Peter Zijlstra
2013-11-11 15:56 ` Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1371163284-6346-1-git-send-email-sasha.levin@oracle.com \
--to=sasha.levin@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).