Changeset: 7371d29e1241 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7371d29e1241
Modified Files:
common/utils/matomic.h
gdk/gdk_private.h
sql/server/rel_rel.c
sql/storage/sql_storage.h
Branch: default
Log Message:
make atomics work on 32 bit arm
diffs (83 lines):
diff --git a/common/utils/matomic.h b/common/utils/matomic.h
--- a/common/utils/matomic.h
+++ b/common/utils/matomic.h
@@ -67,10 +67,15 @@
#if SIZEOF_LONG_LONG == 8
#if ATOMIC_LLONG_LOCK_FREE != 2
-#error "we need _Atomic(unsigned long long) to be lock free"
+#if ATOMIC_LLONG_LOCK_FREE != 1
+#error "we need _Atomic(unsigned [long] long) to be lock free"
#endif
+typedef atomic_ulong ATOMIC_TYPE;
+typedef unsigned long ATOMIC_BASE_TYPE;
+#else
typedef atomic_ullong ATOMIC_TYPE;
typedef unsigned long long ATOMIC_BASE_TYPE;
+#endif
#elif SIZEOF_LONG == 8
#if ATOMIC_LONG_LOCK_FREE != 2
#error "we need _Atomic(unsigned long) to be lock free"
@@ -87,10 +92,15 @@ typedef unsigned long ATOMIC_BASE_TYPE;
#if SIZEOF_LONG_LONG == 8
#if ATOMIC_LLONG_LOCK_FREE != 2
-#error "we need _Atomic(unsigned long long) to be lock free"
+#if ATOMIC_LLONG_LOCK_FREE != 1
+#error "we need _Atomic(unsigned [long] long) to be lock free"
#endif
+typedef atomic_ulong ATOMIC_TYPE;
+typedef unsigned long ATOMIC_BASE_TYPE;
+#else
typedef volatile atomic_ullong ATOMIC_TYPE;
typedef unsigned long long ATOMIC_BASE_TYPE;
+#endif
#elif SIZEOF_LONG == 8
#if ATOMIC_LONG_LOCK_FREE != 2
#error "we need _Atomic(unsigned long) to be lock free"
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -525,9 +525,15 @@ extern size_t GDK_mmap_pagesize; /* mmap
#define GDKswapLock(x) GDKbatLock[(x)&BBP_BATMASK].swap
+#if ATOMIC_LLONG_LOCK_FREE == 2
#define HEAPREMOVE ((ATOMIC_BASE_TYPE) 1 << 63)
#define DELAYEDREMOVE ((ATOMIC_BASE_TYPE) 1 << 62)
#define HEAPREFS (((ATOMIC_BASE_TYPE) 1 << 62) - 1)
+#else
+#define HEAPREMOVE ((ATOMIC_BASE_TYPE) 1 << 31)
+#define DELAYEDREMOVE ((ATOMIC_BASE_TYPE) 1 << 30)
+#define HEAPREFS (((ATOMIC_BASE_TYPE) 1 << 30) - 1)
+#endif
/* when the number of updates to a BAT is less than 1 in this number, we
* keep the unique_est property */
diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -456,6 +456,8 @@ rel_bind_column3( mvc *sql, sql_rel *rel
} else if (is_project(rel->op) && rel->l) {
if (!is_processed(rel))
return rel_bind_column3(sql, rel->l, sname, tname,
cname, f);
+ else
+ return rel_bind_column2(sql, rel->l, tname, cname, f);
} else if (is_join(rel->op)) {
sql_exp *e = rel_bind_column3(sql, rel->l, sname, tname, cname,
f);
diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h
--- a/sql/storage/sql_storage.h
+++ b/sql/storage/sql_storage.h
@@ -474,7 +474,11 @@ extern sql_table *globaltmp_instantiate(
#define NR_TABLE_LOCKS 64
#define NR_COLUMN_LOCKS 512
+#if ATOMIC_LLONG_LOCK_FREE == 2
#define TRANSACTION_ID_BASE (1ULL<<63)
+#else
+#define TRANSACTION_ID_BASE (1UL<<31)
+#endif
typedef struct sqlstore {
int catalog_version; /* software version of the catalog */
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]