summaryrefslogtreecommitdiffstats
path: root/jemalloc/test/thread_arena.c
diff options
context:
space:
mode:
authorJason Evans <je@fb.com>2011-03-14 23:42:26 (GMT)
committerJason Evans <je@fb.com>2011-03-14 23:42:26 (GMT)
commitad11ee6a3416e8d234c35670f20687d17545c09f (patch)
tree40ca578d2c0e1597d17caf0ca7ea6a552d64e1da /jemalloc/test/thread_arena.c
parente27d134efc8609e3f95e4ec13f605ddcb5eb6ca6 (diff)
parent0e4d0d13f9beb8857bb377f41b4fbd327d3a0cbd (diff)
downloadjemalloc-2.1.3.zip
jemalloc-2.1.3.tar.gz
jemalloc-2.1.3.tar.bz2
Merge branch 'dev'2.1.3
Diffstat (limited to 'jemalloc/test/thread_arena.c')
-rw-r--r--jemalloc/test/thread_arena.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/jemalloc/test/thread_arena.c b/jemalloc/test/thread_arena.c
index bd884e1..ef8d681 100644
--- a/jemalloc/test/thread_arena.c
+++ b/jemalloc/test/thread_arena.c
@@ -2,10 +2,13 @@
#include <stdlib.h>
#include <pthread.h>
#include <string.h>
+#include <assert.h>
#define JEMALLOC_MANGLE
#include "jemalloc_test.h"
+#define NTHREADS 10
+
void *
thread_start(void *arg)
{
@@ -29,6 +32,15 @@ thread_start(void *arg)
return (void *)1;
}
+ size = sizeof(arena_ind);
+ if ((err = JEMALLOC_P(mallctl)("thread.arena", &arena_ind, &size, NULL,
+ 0))) {
+ fprintf(stderr, "%s(): Error in mallctl(): %s\n", __func__,
+ strerror(err));
+ return (void *)1;
+ }
+ assert(arena_ind == main_arena_ind);
+
return (NULL);
}
@@ -40,7 +52,8 @@ main(void)
unsigned arena_ind;
size_t size;
int err;
- pthread_t thread;
+ pthread_t threads[NTHREADS];
+ unsigned i;
fprintf(stderr, "Test begin\n");
@@ -60,21 +73,18 @@ main(void)
goto RETURN;
}
- if (pthread_create(&thread, NULL, thread_start, (void *)&arena_ind)
- != 0) {
- fprintf(stderr, "%s(): Error in pthread_create()\n", __func__);
- ret = 1;
- goto RETURN;
+ for (i = 0; i < NTHREADS; i++) {
+ if (pthread_create(&threads[i], NULL, thread_start,
+ (void *)&arena_ind) != 0) {
+ fprintf(stderr, "%s(): Error in pthread_create()\n",
+ __func__);
+ ret = 1;
+ goto RETURN;
+ }
}
- pthread_join(thread, (void *)&ret);
- if (pthread_create(&thread, NULL, thread_start, (void *)&arena_ind)
- != 0) {
- fprintf(stderr, "%s(): Error in pthread_create()\n", __func__);
- ret = 1;
- goto RETURN;
- }
- pthread_join(thread, (void *)&ret);
+ for (i = 0; i < NTHREADS; i++)
+ pthread_join(threads[i], (void *)&ret);
RETURN:
fprintf(stderr, "Test end\n");