Changeset: 665b5f7028cb for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=665b5f7028cb
Added Files:
gdk/gdk_atomic.h
Modified Files:
MonetDB.spec
configure.ag
gdk/Makefile.ag
gdk/gdk_bbp.c
gdk/gdk_system.h
gdk/gdk_utils.c
monetdb5/mal/mal.c
monetdb5/mal/mal_resource.c
Branch: default
Log Message:
Merge with Feb2013 branch.
diffs (truncated from 633 to 300 lines):
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -33,8 +33,8 @@ BuildRequires: bison
BuildRequires: bzip2-devel
# BuildRequires: cfitsio-devel
BuildRequires: flex
-%if %{?centos:0}%{!?centos:1}
-# no geos library on CentOS
+%if %{?rhel:0}%{!?rhel:1}
+# no geos library on RedHat Enterprise Linux and derivatives
BuildRequires: geos-devel >= 2.2.0
%endif
BuildRequires: libcurl-devel
@@ -44,12 +44,14 @@ BuildRequires: openssl-devel
BuildRequires: pcre-devel >= 4.5
BuildRequires: perl
BuildRequires: python-devel
+%if %{?rhel:0}%{!?rhel:1}
BuildRequires: python3-devel
+%endif
# BuildRequires: raptor-devel >= 1.4.16
BuildRequires: readline-devel
BuildRequires: ruby
BuildRequires: rubygems
-%if %{?centos:0}%{!?centos:1}
+%if %{?rhel:0}%{!?rhel:1}
BuildRequires: rubygems-devel
%endif
BuildRequires: unixODBC-devel
@@ -335,7 +337,7 @@ developer.
%{_bindir}/sqlsample.php
%{_bindir}/sqlsample.pl
-%if %{?centos:0}%{!?centos:1}
+%if %{?rhel:0}%{!?rhel:1}
%package geom-MonetDB5
Summary: MonetDB5 SQL GIS support module
Group: Applications/Databases
@@ -429,7 +431,7 @@ fi
%{_libdir}/libmonetdb5.so.*
%dir %{_libdir}/monetdb5
%dir %{_libdir}/monetdb5/autoload
-%if %{?centos:0}%{!?centos:1}
+%if %{?rhel:0}%{!?rhel:1}
%exclude %{_libdir}/monetdb5/geom.mal
%endif
# %exclude %{_libdir}/monetdb5/rdf.mal
@@ -442,7 +444,7 @@ fi
%{_libdir}/monetdb5/autoload/*_opt_sql_append.mal
%{_libdir}/monetdb5/autoload/*_udf.mal
%{_libdir}/monetdb5/autoload/*_vault.mal
-%if %{?centos:0}%{!?centos:1}
+%if %{?rhel:0}%{!?rhel:1}
%exclude %{_libdir}/monetdb5/lib_geom.so
%endif
# %exclude %{_libdir}/monetdb5/lib_rdf.so
@@ -505,7 +507,7 @@ systemd-tmpfiles --create %{_sysconfdir}
%{_libdir}/monetdb5/lib_sql.so
%{_libdir}/monetdb5/*.sql
%dir %{_libdir}/monetdb5/createdb
-%if %{?centos:0}%{!?centos:1}
+%if %{?rhel:0}%{!?rhel:1}
%exclude %{_libdir}/monetdb5/createdb/*_geom.sql
%endif
# %exclude %{_libdir}/monetdb5/createdb/*_rdf.sql
@@ -539,6 +541,7 @@ program.
%{python_sitelib}/python_monetdb-*.egg-info
%doc clients/python2/README.rst
+%if %{?rhel:0}%{!?rhel:1}
%package -n python3-monetdb
Summary: Native MonetDB client Python3 API
Group: Applications/Databases
@@ -560,6 +563,7 @@ program.
%{python3_sitelib}/monetdb/*
%{python3_sitelib}/python_monetdb-*.egg-info
%doc clients/python3/README.rst
+%endif
%package testing
Summary: MonetDB - Monet Database Management System
@@ -626,7 +630,7 @@ developer, but if you do want to test, t
--enable-developer=no \
--enable-fits=no \
--enable-gdk=yes \
- --enable-geom=%{?centos:no}%{!?centos:yes} \
+ --enable-geom=%{?rhel:no}%{!?rhel:yes} \
--enable-instrument=no \
--enable-jaql=yes \
--enable-jdbc=no \
@@ -642,14 +646,14 @@ developer, but if you do want to test, t
--enable-testing=yes \
--with-ant=no \
--with-bz2=yes \
- --with-geos=%{?centos:no}%{!?centos:yes} \
+ --with-geos=%{?rhel:no}%{!?rhel:yes} \
--with-hwcounters=no \
--with-java=no \
--with-mseed=no \
--with-perl=yes \
--with-pthread=yes \
--with-python2=yes \
- --with-python3=yes \
+ --with-python3=%{?rhel:no}%{!?rhel:yes} \
--with-readline=yes \
--with-rubygem=yes \
--with-rubygem-dir="%{gem_dir}" \
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -430,7 +430,7 @@ case "$host_os" in
| sed 's|^.*\(Red\) \(Hat\).* Linux *\([[A-Z]]*\)
release \([[0-9]][[^ \n]]*\)\( .*\)*$|\1\2:\4\3|' \
| sed 's|^Red Hat Enterprise Linux \([[AW]]S\) release
\([[0-9]][[^ \n]]*\)\( .*\)*$|RHEL:\2\1|' \
| sed 's|^\(CentOS\).* release \([[0-9]][[^ \n]]*\)\(
.*\)*$|\1:\2|' \
- | sed 's|^\(Scientific\) Linux SL release \([[0-9]][[^
\n]]*\)\( .*\)*$|\1:\2|'`"
+ | sed 's|^\(Scientific\) Linux.* release \([[0-9]][[^
\n]]*\)\( .*\)*$|\1:\2|'`"
elif test -s /etc/SuSE-release ; then
LINUX_DIST="`cat /etc/SuSE-release | head -n1 \
| sed 's|^.*\(S[[Uu]]SE\) LINUX Enterprise
\([[SD]]\)[[ervsktop]]* \([[0-9]][[^ \n]]*\)\( .*\)*$|\1:\3E\2|' \
diff --git a/gdk/Makefile.ag b/gdk/Makefile.ag
--- a/gdk/Makefile.ag
+++ b/gdk/Makefile.ag
@@ -23,7 +23,7 @@ lib_gdk = {
VERSION = $(GDK_VERSION)
NAME = bat
SOURCES = \
- gdk.h gdk_batop.c gdk_select.c \
+ gdk.h gdk_atomic.h gdk_batop.c gdk_select.c \
gdk_search.c gdk_search.h gdk_tm.c \
gdk_align.c gdk_bbp.c gdk_bbp.h \
gdk_heap.c gdk_setop.mx gdk_utils.c gdk_utils.h \
diff --git a/gdk/gdk_atomic.h b/gdk/gdk_atomic.h
new file mode 100644
--- /dev/null
+++ b/gdk/gdk_atomic.h
@@ -0,0 +1,102 @@
+/*
+ * The contents of this file are subject to the MonetDB Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.monetdb.org/Legal/MonetDBLicense
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ *
+ * The Original Code is the MonetDB Database System.
+ *
+ * The Initial Developer of the Original Code is CWI.
+ * Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
+ * Copyright August 2008-2013 MonetDB B.V.
+ * All Rights Reserved.
+ */
+
+#ifndef _GDK_ATOMIC_H_
+#define _GDK_ATOMIC_H_
+
+#if defined(__GNUC__)
+#if SIZEOF_SSIZE_T == SIZEOF_LONG_LONG
+#define ATOMIC_TYPE long long
+#else
+#define ATOMIC_TYPE long
+#endif
+#define ATOMIC_ADD(var, val) __sync_fetch_and_add(&var, (ATOMIC_TYPE) (val))
+#define ATOMIC_INC(var) __sync_add_and_fetch(&var,
(ATOMIC_TYPE) 1)
+#define ATOMIC_SUB(var, val) __sync_fetch_and_sub(&var, (ATOMIC_TYPE) (val))
+#define ATOMIC_DEC(var) __sync_sub_and_fetch(&var,
(ATOMIC_TYPE) 1)
+#define ATOMIC_START(lock, func)
+#define ATOMIC_END(lock, func)
+#define ATOMIC_INIT(lock, func)
+#define ATOMIC_COMP_SWAP(var, old, new, lock, func) \
+ __sync_val_compare_and_swap(&var, old, new)
+#define ATOMIC_GET(var, lock, func) var
+#elif defined(_MSC_VER)
+#include <intrin.h>
+#if SIZEOF_SSIZE_T == SIZEOF___INT64
+#define ATOMIC_TYPE __int64
+#define ATOMIC_ADD(var, val) _InterlockedExchangeAdd64(&var, (__int64) (val))
+#define ATOMIC_INC(var) _InterlockedIncrement64(&var)
+#define ATOMIC_SUB(var, val) _InterlockedExchangeAdd64(&var, -(__int64)
(val))
+#define ATOMIC_DEC(var) _InterlockedDecrement64(&var)
+#pragma intrinsic(_InterlockedExchangeAdd64)
+#pragma intrinsic(_InterlockedIncrement64)
+#pragma intrinsic(_InterlockedDecrement64)
+#else
+#define ATOMIC_TYPE long
+#define ATOMIC_ADD(var, val) _InterlockedExchangeAdd(&var, (long) (val))
+#define ATOMIC_INC(var) _InterlockedIncrement(&var)
+#define ATOMIC_SUB(var, val) _InterlockedExchangeAdd(&var, -(long) (val))
+#define ATOMIC_DEC(var) _InterlockedDecrement(&var)
+#pragma intrinsic(_InterlockedExchangeAdd)
+#pragma intrinsic(_InterlockedIncrement)
+#pragma intrinsic(_InterlockedDecrement)
+#endif
+#define ATOMIC_START(lock, func)
+#define ATOMIC_END(lock, func)
+#define ATOMIC_INIT(lock, func)
+#define ATOMIC_COMP_SWAP(var, old, new, lock, func) \
+ _InterlockedCompareExchange(&var, new, old)
+#pragma intrinsic(_InterlockedCompareExchange)
+#define ATOMIC_GET(var, lock, func) var
+#else
+#define ATOMIC_LOCK PTHREAD_MUTEX_INITIALIZER /* must use locks */
+#define ATOMIC_TYPE ssize_t
+#define ATOMIC_ADD(var, val) var += (ssize_t) (val)
+#define ATOMIC_INC(var) var++
+#define ATOMIC_SUB(var, val) var -= (ssize_t) (val)
+#define ATOMIC_DEC(var) var--
+#define ATOMIC_START(lock, func) MT_lock_set(&lock, func)
+#define ATOMIC_END(lock, func) MT_lock_unset(&lock, func)
+#define ATOMIC_INIT(lock, func) MT_lock_init(&lock, func)
+static inline int
+atomic_comp_swap(volatile int *var, int old, int new, MT_Lock *lock, const
char *func)
+{
+ int orig;
+ MT_lock_set(lock, func);
+ orig = *var;
+ if (*var == old)
+ *var = new;
+ MT_lock_unset(lock, func);
+ return orig;
+}
+#define ATOMIC_COMP_SWAP(var, old, new, lock, func) \
+ atomic_comp_swap(&var, old, new, &lock, func)
+static inline int
+atomic_get(volatile int *var, MT_Lock *lock, const char *func)
+{
+ int orig;
+ MT_lock_set(lock, func);
+ orig = *var;
+ MT_lock_unset(lock, func);
+ return orig;
+}
+#define ATOMIC_GET(var, lock, func) atomic_get(&var, &lock, func)
+#endif
+
+#endif /* _GDK_ATOMIC_H_ */
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -100,7 +100,7 @@ BBPrec *BBP[N_BBPINIT]; /* fixed base V
bat BBPlimit = 0; /* current committed VM BBP array */
bat BBPsize = 0; /* current used size of BBP array */
-#define KITTENNAP 2 * GDKnr_threads /* used to suspend processing */
+#define KITTENNAP 4 /* used to suspend processing */
#define BBPNONAME "." /* filler for no name in BBP.dir */
/*
* The hash index uses a bucket index (int array) of size mask that is
diff --git a/gdk/gdk_system.h b/gdk/gdk_system.h
--- a/gdk/gdk_system.h
+++ b/gdk/gdk_system.h
@@ -46,7 +46,10 @@
/* Linux gprof messes up on multithreaded programs */
#ifdef PROFILE
/* Linux gprof messes up on multithreaded programs */
-gdk_export int gprof_pthread_create(pthread_t * __restrict, __const
pthread_attr_t * __restrict, void *(*fcn) (void *), void *__restrict);
+gdk_export int gprof_pthread_create(pthread_t * __restrict,
+ __const pthread_attr_t * __restrict,
+ void *(*fcn) (void *),
+ void *__restrict);
#define pthread_create gprof_pthread_create
#endif
#endif
@@ -57,7 +60,7 @@ gdk_export int gprof_pthread_create(pthr
#endif
#ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h> /* prerequisite of sys/sysctl on OpenBSD */
+# include <sys/param.h> /* prerequisite of sys/sysctl on OpenBSD */
#endif
#ifdef HAVE_SYS_SYSCTL_H
# include <sys/sysctl.h>
@@ -84,18 +87,17 @@ gdk_export unsigned long long MT_locktra
gdk_export char *MT_locktrace_nme[65536];
gdk_export unsigned long long MT_clock(void);
-#define MT_locktrace_hash(_id) ((int) (((lng) ((size_t) _id))^(((lng)
((size_t) _id))>>16))&65535)
+#define MT_locktrace_hash(_id) ((int) (((lng) ((size_t) (_id))) ^ (((lng)
((size_t) (_id))) >> 16)) & 65535)
#define MT_log_trace(_impl, _object, _action, _caller, _fp, _pat) \
do { \
unsigned long long _c=0; \
if (MT_locktrace) \
- _c=(MT_getpid() == MT_locktrace)?MT_clock():0; \
+ _c = MT_getpid() == MT_locktrace ? MT_clock() : 0; \
MT_log(_impl, _object, _action, _caller, _fp); \
- if (_c) { \
+ if (_c) \
MT_locktrace_cnt[MT_locktrace_hash(_pat)] += MT_clock()
- _c; \
- } \
} while(0)
-#define MT_locktrace_set(s,n)\
+#define MT_locktrace_set(s, n) \
do { \
int _i = MT_locktrace_hash(s); \
if (MT_locktrace_nme[_i] && MT_locktrace_nme[_i] != (n)) { \
@@ -106,10 +108,18 @@ gdk_export unsigned long long MT_clock(v
} while (0)
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list