summaryrefslogtreecommitdiff
path: root/src/lib/libc/include
diff options
context:
space:
mode:
authorotto <>2006-02-22 07:16:32 +0000
committerotto <>2006-02-22 07:16:32 +0000
commitf79af607fea8db71524b8a4a1553fb437b284616 (patch)
treeb3ca7c28557a9e6e12c3c78b3442ef8b086ebff1 /src/lib/libc/include
parentac647c4699103a57b222ea6685c784a0445c0790 (diff)
downloadopenbsd-f79af607fea8db71524b8a4a1553fb437b284616.tar.gz
openbsd-f79af607fea8db71524b8a4a1553fb437b284616.tar.bz2
openbsd-f79af607fea8db71524b8a4a1553fb437b284616.zip
Avouid a race in atexit() handling by introducing a lock. Problem
originally reported by Gergely Kovacs; help from dhartmei@; ok tedu@ millert@
Diffstat (limited to 'src/lib/libc/include')
-rw-r--r--src/lib/libc/include/thread_private.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/lib/libc/include/thread_private.h b/src/lib/libc/include/thread_private.h
index 9fbadce008..5fbbf592a4 100644
--- a/src/lib/libc/include/thread_private.h
+++ b/src/lib/libc/include/thread_private.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: thread_private.h,v 1.17 2005/11/15 11:56:40 millert Exp $ */ 1/* $OpenBSD: thread_private.h,v 1.18 2006/02/22 07:16:31 otto Exp $ */
2 2
3/* PUBLIC DOMAIN: No Rights Reserved. Marco S Hyman <marc@snafu.org> */ 3/* PUBLIC DOMAIN: No Rights Reserved. Marco S Hyman <marc@snafu.org> */
4 4
@@ -123,5 +123,16 @@ void _thread_malloc_unlock(void);
123 _thread_malloc_init();\ 123 _thread_malloc_init();\
124 } while (0) 124 } while (0)
125 125
126void _thread_atexit_lock(void);
127void _thread_atexit_unlock(void);
128
129#define _ATEXIT_LOCK() do { \
130 if (__isthreaded) \
131 _thread_atexit_lock(); \
132 } while (0)
133#define _ATEXIT_UNLOCK() do { \
134 if (__isthreaded) \
135 _thread_atexit_unlock();\
136 } while (0)
126 137
127#endif /* _THREAD_PRIVATE_H_ */ 138#endif /* _THREAD_PRIVATE_H_ */