git://git.camperquake.de
/
zfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Conserve stack in zfs_mkdir()
[zfs.git]
/
lib
/
libuutil
/
uu_misc.c
diff --git
a/lib/libuutil/uu_misc.c
b/lib/libuutil/uu_misc.c
index
3d5b40c
..
67f757c
100644
(file)
--- 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 <stdlib.h>
#include <string.h>
#include <sys/debug.h>
-#include <thread.h>
#include <unistd.h>
#include <ctype.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 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)
{
void
uu_set_error(uint_t code)
{
- if (
thr_main() != 0
) {
+ if (
_uu_main_thread
) {
_uu_main_error = code;
return;
}
_uu_main_error = code;
return;
}
@@
-101,7
+101,7
@@
uu_set_error(uint_t code)
uint32_t
uu_error(void)
{
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? */
return (_uu_main_error);
if (uu_error_key_setup < 0) /* can't happen? */
@@
-206,14
+206,6
@@
uu_panic(const char *format, ...)
(void) pause();
}
(void) pause();
}
-int
-assfail(const char *astring, const char *file, int line)
-{
- __assert(astring, file, line);
- /*NOTREACHED*/
- return (0);
-}
-
static void
uu_lockup(void)
{
static void
uu_lockup(void)
{
@@
-245,10
+237,17
@@
uu_release_child(void)
uu_release();
}
uu_release();
}
+#ifdef __GNUC__
+static void
+uu_init(void) __attribute__((constructor));
+#else
#pragma init(uu_init)
#pragma init(uu_init)
+#endif
+
static void
uu_init(void)
{
static void
uu_init(void)
{
+ _uu_main_thread = 1;
(void) pthread_atfork(uu_lockup, uu_release, uu_release_child);
}
(void) pthread_atfork(uu_lockup, uu_release, uu_release_child);
}