Fix Solaris thread dependency by using pthreads
[zfs.git] / lib / libuutil / uu_misc.c
index 578bf32..1b843ef 100644 (file)
@@ -34,7 +34,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/debug.h>
-#include <thread.h>
 #include <unistd.h>
 #include <ctype.h>
 
@@ -68,11 +67,12 @@ static va_list              uu_panic_args;
 static pthread_t       uu_panic_thread;
 
 static uint32_t                _uu_main_error;
+static __thread int    _uu_main_thread = 0;
 
 void
 uu_set_error(uint_t code)
 {
-       if (thr_main() != 0) {
+       if (_uu_main_thread) {
                _uu_main_error = code;
                return;
        }
@@ -101,7 +101,7 @@ uu_set_error(uint_t code)
 uint32_t
 uu_error(void)
 {
-       if (thr_main() != 0)
+       if (_uu_main_thread)
                return (_uu_main_error);
 
        if (uu_error_key_setup < 0)     /* can't happen? */
@@ -259,6 +259,7 @@ uu_init(void) __attribute__((constructor));
 static void
 uu_init(void)
 {
+       _uu_main_thread = 1;
        (void) pthread_atfork(uu_lockup, uu_release, uu_release_child);
 }