| #include "test/jemalloc_test.h" |
| |
| #ifdef _WIN32 |
| void |
| thd_create(thd_t *thd, void *(*proc)(void *), void *arg) |
| { |
| LPTHREAD_START_ROUTINE routine = (LPTHREAD_START_ROUTINE)proc; |
| *thd = CreateThread(NULL, 0, routine, arg, 0, NULL); |
| if (*thd == NULL) |
| test_fail("Error in CreateThread()\n"); |
| } |
| |
| void |
| thd_join(thd_t thd, void **ret) |
| { |
| |
| if (WaitForSingleObject(thd, INFINITE) == WAIT_OBJECT_0 && ret) { |
| DWORD exit_code; |
| GetExitCodeThread(thd, (LPDWORD) &exit_code); |
| *ret = (void *)(uintptr_t)exit_code; |
| } |
| } |
| |
| #else |
| void |
| thd_create(thd_t *thd, void *(*proc)(void *), void *arg) |
| { |
| |
| if (pthread_create(thd, NULL, proc, arg) != 0) |
| test_fail("Error in pthread_create()\n"); |
| } |
| |
| void |
| thd_join(thd_t thd, void **ret) |
| { |
| |
| pthread_join(thd, ret); |
| } |
| #endif |