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]

Reply via email to