Changeset: 63e7d8bc730b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/63e7d8bc730b
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk.h
        gdk/gdk_system_private.h
        gdk/gdk_utils.c
Branch: default
Log Message:

Hide Thread structure, unexport THRdel, simplify Thread struct content.


diffs (95 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -406,7 +406,6 @@ gdk_return STRMPcreate(BAT *b, BAT *s);
 void STRMPdestroy(BAT *b);
 BAT *STRMPfilter(BAT *b, BAT *s, const char *q, const bool keep_nils);
 MT_Id THRcreate(void (*f)(void *), void *arg, enum MT_thr_detach d, const char 
*name);
-void THRdel(Thread t);
 int THRgettid(void);
 bool THRhighwater(void);
 gdk_return TMsubcommit(BAT *bl) __attribute__((__warn_unused_result__));
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1984,17 +1984,11 @@ VALptr(const ValRecord *v)
 #define THREADS        1024
 #define THREADDATA     3
 
-typedef struct threadStruct {
-       int tid;                /* logical ID by MonetDB; val == index
-                                * into this array + 1 (0 is
-                                * invalid) */
-       ATOMIC_TYPE pid;        /* thread id, 0 = unallocated */
-} *Thread;
+typedef struct threadStruct *Thread;
 
 
 gdk_export int THRgettid(void);
 gdk_export MT_Id THRcreate(void (*f) (void *), void *arg, enum MT_thr_detach 
d, const char *name);
-gdk_export void THRdel(Thread t);
 
 gdk_export stream *GDKstdout;
 gdk_export stream *GDKstdin;
diff --git a/gdk/gdk_system_private.h b/gdk/gdk_system_private.h
--- a/gdk/gdk_system_private.h
+++ b/gdk/gdk_system_private.h
@@ -22,6 +22,8 @@ bool MT_kill_threads(void)
        __attribute__((__visibility__("hidden")));
 bool MT_thread_override_limits(void)
        __attribute__((__visibility__("hidden")));
+void THRdel(Thread t)
+       __attribute__((__visibility__("hidden")));
 Thread THRnew(MT_Id pid)
        __attribute__((__visibility__("hidden")));
 #ifdef NATIVE_WIN32
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1248,6 +1248,9 @@ GDKinit(opt *set, int setlen, bool embed
 
 int GDKnr_threads = 0;
 static ATOMIC_TYPE GDKnrofthreads = ATOMIC_VAR_INIT(0);
+struct threadStruct {
+       ATOMIC_TYPE pid;        /* thread id, 0 = unallocated */
+};
 static struct threadStruct GDKthreads[THREADS];
 
 bool
@@ -1616,15 +1619,15 @@ GDK_find_self(void)
 Thread
 THRnew(MT_Id pid)
 {
-       for (Thread s = GDKthreads; s < GDKthreads + THREADS; s++) {
+       for (int i = 0; i < THREADS; i++) {
                ATOMIC_BASE_TYPE npid = 0;
-               if (ATOMIC_CAS(&s->pid, &npid, pid)) {
+               if (ATOMIC_CAS(&GDKthreads[i].pid, &npid, pid)) {
                        /* successfully allocated, fill in rest */
-                       TRC_DEBUG(PAR, "%d %zu\n", s->tid, (size_t) pid);
+                       TRC_DEBUG(PAR, "%d %zu\n", i + 1, (size_t) pid);
                        TRC_DEBUG(PAR, "Number of threads: %d\n",
                                  (int) ATOMIC_GET(&GDKnrofthreads) + 1);
                        ATOMIC_INC(&GDKnrofthreads);
-                       return s;
+                       return &GDKthreads[i];
                }
        }
        TRC_DEBUG(IO_, "Too many threads\n");
@@ -1727,7 +1730,6 @@ THRinit(void)
        }
        if (first) {
                for (int i = 0; i < THREADS; i++) {
-                       GDKthreads[i].tid = i + 1;
                        ATOMIC_INIT(&GDKthreads[i].pid, 0);
                }
                first = false;
@@ -1754,7 +1756,7 @@ THRgettid(void)
        int t;
 
        s = GDK_find_self();
-       t = s ? s->tid : 1;
+       t = s ? (s - GDKthreads) + 1 : 1;
        return t;
 }
 
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to