summaryrefslogtreecommitdiffstats
path: root/lib/libuutil
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libuutil')
-rw-r--r--lib/libuutil/uu_misc.c7
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);
}