From: Heng Li Date: Wed, 9 Oct 2013 02:45:29 +0000 (-0400) Subject: for C++ compatibility X-Git-Tag: spawn-final~13 X-Git-Url: http://www.kaiwu.me/postgresql/commit/static/gitweb.js?a=commitdiff_plain;h=cb9c88c84e95f0979f1c825ec5ba20b9184e124c;p=klib.git for C++ compatibility --- diff --git a/kthread.c b/kthread.c index 981215f..e4b6568 100644 --- a/kthread.c +++ b/kthread.c @@ -23,10 +23,10 @@ typedef struct { deque_t *dq_init(int n_bits) { deque_t *d; - d = calloc(1, sizeof(deque_t)); + d = (deque_t*)calloc(1, sizeof(deque_t)); d->n_bits = n_bits; d->mask = (1U<a = calloc(1<a = (dqval_t*)calloc(1<q) == 0) { // work-stealing + if (dq_deq(w->q, 1, &k) < 0) { int i, max, max_i; for (i = 0, max = -1, max_i = -1; i < w->f->n; ++i) if (max < dq_size(w->f->w[i].q)) max = dq_size(w->f->w[i].q), max_i = i; if (dq_deq(w->f->w[max_i].q, 0, &k) < 0) k = -1; - } else if (dq_deq(w->q, 1, &k) < 0) k = -1; + } if (k >= 0) w->f->func(w->f->global, (uint8_t*)w->f->local + w->f->size * k); else if (w->f->finished) break; } @@ -107,19 +107,19 @@ void kt_for(int n, int (*func)(void*,void*), void *global, int m, int size, void int i, k; if (dq_bits <= 0) dq_bits = 10; - f = calloc(1, sizeof(kt_for_t)); + f = (kt_for_t*)calloc(1, sizeof(kt_for_t)); f->n = n - 1, f->size = size; f->global = global, f->local = local; f->func = func; - f->w = calloc(f->n, sizeof(ktf_worker_t)); + f->w = (ktf_worker_t*)calloc(f->n, sizeof(ktf_worker_t)); for (i = 0; i < f->n; ++i) { ktf_worker_t *wi = &f->w[i]; wi->f = f, wi->i = i; wi->q = dq_init(dq_bits); } - tid = calloc(f->n, sizeof(pthread_t)); + tid = (pthread_t*)calloc(f->n, sizeof(pthread_t)); for (i = 0; i < f->n; ++i) pthread_create(&tid[i], 0, ktf_worker, &f->w[i]); for (k = 0; k < m; ++k) {