diff options
Diffstat (limited to 'lib/libuutil')
-rw-r--r-- | lib/libuutil/uu_misc.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/libuutil/uu_misc.c b/lib/libuutil/uu_misc.c index 578bf3294..1b843effe 100644 --- a/lib/libuutil/uu_misc.c +++ b/lib/libuutil/uu_misc.c @@ -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); } |