7155300: Include pthread.h on all POSIX platforms except Solaris to improve portability

Reviewed-by: alanb, dholmes
This commit is contained in:
Shi Jun Zhang 2012-03-22 12:30:43 +08:00
parent b33626e87a
commit 550028f6a1
2 changed files with 17 additions and 20 deletions

View File

@ -37,10 +37,10 @@
#include "manifest_info.h"
#include "version_comp.h"
#ifdef __linux__
#include <pthread.h>
#else
#ifdef __solaris__
#include <thread.h>
#else
#include <pthread.h>
#endif
#define JVM_DLL "libjvm.so"
@ -1434,7 +1434,18 @@ jlong_format_specifier() {
int
ContinueInNewThread0(int (JNICALL *continuation)(void *), jlong stack_size, void * args) {
int rslt;
#ifdef __linux__
#ifdef __solaris__
thread_t tid;
long flags = 0;
if (thr_create(NULL, stack_size, (void *(*)(void *))continuation, args, flags, &tid) == 0) {
void * tmp;
thr_join(tid, NULL, &tmp);
rslt = (int)tmp;
} else {
/* See below. Continue in current thread if thr_create() failed */
rslt = continuation(args);
}
#else
pthread_t tid;
pthread_attr_t attr;
pthread_attr_init(&attr);
@ -1459,17 +1470,6 @@ ContinueInNewThread0(int (JNICALL *continuation)(void *), jlong stack_size, void
}
pthread_attr_destroy(&attr);
#else
thread_t tid;
long flags = 0;
if (thr_create(NULL, stack_size, (void *(*)(void *))continuation, args, flags, &tid) == 0) {
void * tmp;
thr_join(tid, NULL, &tmp);
rslt = (int)tmp;
} else {
/* See above. Continue in current thread if thr_create() failed */
rslt = continuation(args);
}
#endif
return rslt;
}

View File

@ -35,8 +35,7 @@
#include <sys/time.h>
#ifdef __solaris__
#include <thread.h>
#endif
#if defined(__linux__) || defined(_ALLBSD_SOURCE)
#else
#include <pthread.h>
#include <sys/poll.h>
#endif
@ -306,9 +305,7 @@ dbgsysTlsGet(int index) {
return r;
}
#endif
#if defined(__linux__) || defined(_ALLBSD_SOURCE)
#else
int
dbgsysTlsAlloc() {
pthread_key_t key;