diff options
Diffstat (limited to 'hurd/hurd/signal.h')
-rw-r--r-- | hurd/hurd/signal.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/hurd/hurd/signal.h b/hurd/hurd/signal.h index 971a0e3a7a..1d9c7d8cd7 100644 --- a/hurd/hurd/signal.h +++ b/hurd/hurd/signal.h @@ -129,6 +129,8 @@ extern struct hurd_sigstate *_hurd_self_sigstate (void) #define _HURD_SIGNAL_H_EXTERN_INLINE __extern_inline #endif +#if defined __USE_EXTERN_INLINES && defined _LIBC +# if IS_IN (libc) _HURD_SIGNAL_H_EXTERN_INLINE struct hurd_sigstate * _hurd_self_sigstate (void) { @@ -138,6 +140,8 @@ _hurd_self_sigstate (void) *location = _hurd_thread_sigstate (__mach_thread_self ()); return *location; } +# endif +#endif /* Thread listening on our message port; also called the "signal thread". */ @@ -164,6 +168,10 @@ extern int _hurd_core_limit; interrupted lest the signal handler try to take the same lock and deadlock result. */ +extern void *_hurd_critical_section_lock (void); + +#if defined __USE_EXTERN_INLINES && defined _LIBC +# if IS_IN (libc) _HURD_SIGNAL_H_EXTERN_INLINE void * _hurd_critical_section_lock (void) { @@ -188,7 +196,13 @@ _hurd_critical_section_lock (void) _hurd_critical_section_unlock to unlock it. */ return ss; } +# endif +#endif +extern void _hurd_critical_section_unlock (void *our_lock); + +#if defined __USE_EXTERN_INLINES && defined _LIBC +# if IS_IN (libc) _HURD_SIGNAL_H_EXTERN_INLINE void _hurd_critical_section_unlock (void *our_lock) { @@ -211,6 +225,8 @@ _hurd_critical_section_unlock (void *our_lock) __msg_sig_post (_hurd_msgport, 0, 0, __mach_task_self ()); } } +# endif +#endif /* Convenient macros for simple uses of critical sections. These two must be used as a pair at the same C scoping level. */ |