summaryrefslogtreecommitdiffstats
path: root/lib/tdb/wscript
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2013-02-21 16:34:32 +0100
committerJeremy Allison <jra@samba.org>2014-05-22 21:05:15 +0200
commitdb5bda56bf089ec6052d92bb78f3b49f7c812e00 (patch)
tree85f719a424147e838a05e77cf97bb3401d596988 /lib/tdb/wscript
parentcbd73ba1635c061fa71ff0476cbce087b389d1ad (diff)
downloadsamba-db5bda56bf089ec6052d92bb78f3b49f7c812e00.tar.gz
samba-db5bda56bf089ec6052d92bb78f3b49f7c812e00.tar.xz
samba-db5bda56bf089ec6052d92bb78f3b49f7c812e00.zip
tdb: add TDB_MUTEX_LOCKING support
This adds optional support for locking based on shared robust mutexes. The caller can use the TDB_MUTEX_LOCKING flag together with TDB_CLEAR_IF_FIRST after verifying with tdb_runtime_check_for_robust_mutexes() that it's supported by the current system. The caller should be aware that using TDB_MUTEX_LOCKING implies some limitations, e.g. it's not possible to have multiple read chainlocks on a given hash chain from multiple processes. Note: that this doesn't make tdb thread safe! Pair-Programmed-With: Stefan Metzmacher <metze@samba.org> Pair-Programmed-With: Michael Adam <obnox@samba.org> Signed-off-by: Volker Lendecke <vl@samba.org> Signed-off-by: Stefan Metzmacher <metze@samba.org> Signed-off-by: Michael Adam <obnox@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'lib/tdb/wscript')
-rw-r--r--lib/tdb/wscript36
1 files changed, 29 insertions, 7 deletions
diff --git a/lib/tdb/wscript b/lib/tdb/wscript
index 70196938ed2..6243ccff8df 100644
--- a/lib/tdb/wscript
+++ b/lib/tdb/wscript
@@ -1,7 +1,7 @@
#!/usr/bin/env python
APPNAME = 'tdb'
-VERSION = '1.2.13'
+VERSION = '1.3.0'
blddir = 'bin'
@@ -46,6 +46,10 @@ def set_options(opt):
opt.BUILTIN_DEFAULT('replace')
opt.PRIVATE_EXTENSION_DEFAULT('tdb', noextension='tdb')
opt.RECURSE('lib/replace')
+ opt.add_option('--disable-tdb-mutex-locking',
+ help=("Disable the use of pthread robust mutexes"),
+ action="store_true", dest='disable_tdb_mutex_locking',
+ default=False)
if opt.IN_LAUNCH_DIR():
opt.add_option('--disable-python',
help=("disable the pytdb module"),
@@ -53,6 +57,11 @@ def set_options(opt):
def configure(conf):
+ conf.env.disable_tdb_mutex_locking = getattr(Options.options,
+ 'disable_tdb_mutex_locking',
+ False)
+ if not conf.env.disable_tdb_mutex_locking:
+ conf.env.replace_add_global_pthread = True
conf.RECURSE('lib/replace')
conf.env.standalone_tdb = conf.IN_LAUNCH_DIR()
@@ -68,6 +77,11 @@ def configure(conf):
conf.env.disable_python = getattr(Options.options, 'disable_python', False)
+ if (conf.CONFIG_SET('HAVE_ROBUST_MUTEXES') and
+ conf.env.building_tdb and
+ not conf.env.disable_tdb_mutex_locking):
+ conf.define('USE_TDB_MUTEX_LOCKING', 1)
+
conf.CHECK_XSLTPROC_MANPAGES()
if not conf.env.disable_python:
@@ -87,10 +101,12 @@ def configure(conf):
def build(bld):
bld.RECURSE('lib/replace')
- COMMON_SRC = bld.SUBDIR('common',
- '''check.c error.c tdb.c traverse.c
- freelistcheck.c lock.c dump.c freelist.c
- io.c open.c transaction.c hash.c summary.c rescue.c''')
+ COMMON_FILES='''check.c error.c tdb.c traverse.c
+ freelistcheck.c lock.c dump.c freelist.c
+ io.c open.c transaction.c hash.c summary.c rescue.c
+ mutex.c'''
+
+ COMMON_SRC = bld.SUBDIR('common', COMMON_FILES)
if bld.env.standalone_tdb:
bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig'
@@ -99,9 +115,15 @@ def build(bld):
private_library = True
if not bld.CONFIG_SET('USING_SYSTEM_TDB'):
+
+ tdb_deps = 'replace'
+
+ if bld.CONFIG_SET('USE_TDB_MUTEX_LOCKING'):
+ tdb_deps += ' pthread'
+
bld.SAMBA_LIBRARY('tdb',
COMMON_SRC,
- deps='replace',
+ deps=tdb_deps,
includes='include',
abi_directory='ABI',
abi_match='tdb_*',
@@ -137,7 +159,7 @@ def build(bld):
# FIXME: This hardcoded list is stupid, stupid, stupid.
bld.SAMBA_SUBSYSTEM('tdb-test-helpers',
'test/external-agent.c test/lock-tracking.c test/logging.c',
- 'replace',
+ tdb_deps,
includes='include')
for t in tdb1_unit_tests: