diff --git a/src/hotspot/os/bsd/os_bsd.cpp b/src/hotspot/os/bsd/os_bsd.cpp index fc5b9952f78..2d1540ea641 100644 --- a/src/hotspot/os/bsd/os_bsd.cpp +++ b/src/hotspot/os/bsd/os_bsd.cpp @@ -102,6 +102,14 @@ #include #endif +#ifdef __FreeBSD__ + #include +#endif + +#ifdef __NetBSD__ +#include +#endif + #ifdef __APPLE__ #include #include @@ -873,23 +881,20 @@ pid_t os::Bsd::gettid() { mach_port_deallocate(mach_task_self(), port); return (pid_t)port; +#elif defined(__FreeBSD__) + return ::pthread_getthreadid_np(); +#elif defined(__OpenBSD__) + retval = getthrid(); +#elif defined(__NetBSD__) + retval = (pid_t) _lwp_self(); #else - #ifdef __FreeBSD__ - retval = syscall(SYS_thr_self); - #else - #ifdef __OpenBSD__ - retval = syscall(SYS_getthrid); - #else - #ifdef __NetBSD__ - retval = (pid_t) syscall(SYS__lwp_self); - #endif - #endif - #endif +#error "unsupported OS" #endif if (retval == -1) { return getpid(); } + return retval; } // Returns the uid of a process or -1 on error.