| /* |
| * This header should be included by tests, rather than directly including |
| * jemalloc/jemalloc.h, because --with-install-suffix may cause the header to |
| * have a different name. |
| */ |
| #include "jemalloc/jemalloc@install_suffix@.h" |
| #include "jemalloc/internal/jemalloc_internal.h" |
| |
| /* Abstraction layer for threading in tests */ |
| #ifdef _WIN32 |
| #include <windows.h> |
| |
| typedef HANDLE je_thread_t; |
| |
| void |
| je_thread_create(je_thread_t *thread, void *(*proc)(void *), void *arg) |
| { |
| LPTHREAD_START_ROUTINE routine = (LPTHREAD_START_ROUTINE)proc; |
| *thread = CreateThread(NULL, 0, routine, arg, 0, NULL); |
| if (*thread == NULL) { |
| malloc_printf("Error in CreateThread()\n"); |
| exit(1); |
| } |
| } |
| |
| void |
| je_thread_join(je_thread_t thread, void **ret) |
| { |
| WaitForSingleObject(thread, INFINITE); |
| } |
| |
| #else |
| #include <pthread.h> |
| |
| typedef pthread_t je_thread_t; |
| |
| void |
| je_thread_create(je_thread_t *thread, void *(*proc)(void *), void *arg) |
| { |
| |
| if (pthread_create(thread, NULL, proc, arg) != 0) { |
| malloc_printf("Error in pthread_create()\n"); |
| exit(1); |
| } |
| } |
| |
| void |
| je_thread_join(je_thread_t thread, void **ret) |
| { |
| |
| pthread_join(thread, ret); |
| } |
| #endif |