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]