diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2014-04-22 00:48:02 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2014-04-22 00:48:02 +0200 |
commit | 3f5671523f26e6558eef6d0e4fcd2af165634e93 (patch) | |
tree | 244d64ab0684179e56a48fe30af0f53f9111900c /hurd | |
parent | 54884b5d5a0c8ed3096e7a719e283f28be748882 (diff) | |
parent | 995c97876793b4cef279f102949858650baec3ef (diff) |
Merge branch 't/tls-threadvar' into refs/top-bases/tschwinge/Roger_Whittaker
Conflicts:
hurd/hurd/signal.h
Diffstat (limited to 'hurd')
-rw-r--r-- | hurd/hurd/fd.h | 2 | ||||
-rw-r--r-- | hurd/hurd/port.h | 12 | ||||
-rw-r--r-- | hurd/hurd/signal.h | 17 | ||||
-rw-r--r-- | hurd/hurd/userlink.h | 6 | ||||
-rw-r--r-- | hurd/hurdsig.c | 3 |
5 files changed, 18 insertions, 22 deletions
diff --git a/hurd/hurd/fd.h b/hurd/hurd/fd.h index cd8edccdc2..eaaa332050 100644 --- a/hurd/hurd/fd.h +++ b/hurd/hurd/fd.h @@ -60,7 +60,7 @@ extern struct mutex _hurd_dtable_lock; /* Locks those two variables. */ struct hurd_fd *_hurd_fd_get (int fd); -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_FD_H_EXTERN_INLINE struct hurd_fd * _hurd_fd_get (int fd) { diff --git a/hurd/hurd/port.h b/hurd/hurd/port.h index ce55154364..810bb3171a 100644 --- a/hurd/hurd/port.h +++ b/hurd/hurd/port.h @@ -62,7 +62,7 @@ struct hurd_port void _hurd_port_init (struct hurd_port *port, mach_port_t init); -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_PORT_H_EXTERN_INLINE void _hurd_port_init (struct hurd_port *port, mach_port_t init) { @@ -83,7 +83,7 @@ mach_port_t _hurd_port_locked_get (struct hurd_port *port, struct hurd_userlink *link); -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_PORT_H_EXTERN_INLINE mach_port_t _hurd_port_locked_get (struct hurd_port *port, struct hurd_userlink *link) @@ -107,7 +107,7 @@ mach_port_t _hurd_port_get (struct hurd_port *port, struct hurd_userlink *link); -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_PORT_H_EXTERN_INLINE mach_port_t _hurd_port_get (struct hurd_port *port, struct hurd_userlink *link) @@ -129,7 +129,7 @@ _hurd_port_free (struct hurd_port *port, struct hurd_userlink *link, mach_port_t used_port); -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_PORT_H_EXTERN_INLINE void _hurd_port_free (struct hurd_port *port, struct hurd_userlink *link, @@ -157,7 +157,7 @@ _hurd_port_free (struct hurd_port *port, void _hurd_port_locked_set (struct hurd_port *port, mach_port_t newport); -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_PORT_H_EXTERN_INLINE void _hurd_port_locked_set (struct hurd_port *port, mach_port_t newport) { @@ -174,7 +174,7 @@ _hurd_port_locked_set (struct hurd_port *port, mach_port_t newport) void _hurd_port_set (struct hurd_port *port, mach_port_t newport); -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_PORT_H_EXTERN_INLINE void _hurd_port_set (struct hurd_port *port, mach_port_t newport) { diff --git a/hurd/hurd/signal.h b/hurd/hurd/signal.h index 607b05919c..e15860aec6 100644 --- a/hurd/hurd/signal.h +++ b/hurd/hurd/signal.h @@ -158,18 +158,17 @@ extern void _hurd_sigstate_delete (thread_t thread); #define _HURD_SIGNAL_H_EXTERN_INLINE __extern_inline #endif -extern __thread struct hurd_sigstate *_hurd_sigstate; -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_SIGNAL_H_EXTERN_INLINE struct hurd_sigstate * _hurd_self_sigstate (void) { - if (_hurd_sigstate == NULL) + if (THREAD_SELF->_hurd_sigstate == NULL) { thread_t self = __mach_thread_self (); - _hurd_sigstate = _hurd_thread_sigstate (self); + THREAD_SELF->_hurd_sigstate = _hurd_thread_sigstate (self); __mach_port_deallocate (__mach_task_self (), self); } - return _hurd_sigstate; + return THREAD_SELF->_hurd_sigstate; } #endif @@ -194,7 +193,7 @@ extern int _hurd_core_limit; void *_hurd_critical_section_lock (void); -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_SIGNAL_H_EXTERN_INLINE void * _hurd_critical_section_lock (void) { @@ -206,7 +205,7 @@ _hurd_critical_section_lock (void) return NULL; #endif - ss = _hurd_sigstate; + ss = THREAD_SELF->_hurd_sigstate; if (ss == NULL) { thread_t self = __mach_thread_self (); @@ -215,7 +214,7 @@ _hurd_critical_section_lock (void) asked for it. In this case, the critical section flag cannot possible already be set. Look up our sigstate structure the slow way. */ - ss = _hurd_sigstate = _hurd_thread_sigstate (self); + ss = THREAD_SELF->_hurd_sigstate = _hurd_thread_sigstate (self); __mach_port_deallocate (__mach_task_self (), self); } @@ -232,7 +231,7 @@ _hurd_critical_section_lock (void) void _hurd_critical_section_unlock (void *our_lock); -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_SIGNAL_H_EXTERN_INLINE void _hurd_critical_section_unlock (void *our_lock) { diff --git a/hurd/hurd/userlink.h b/hurd/hurd/userlink.h index 4962f0cb65..bd0a8c2569 100644 --- a/hurd/hurd/userlink.h +++ b/hurd/hurd/userlink.h @@ -80,7 +80,7 @@ void _hurd_userlink_link (struct hurd_userlink **chainp, struct hurd_userlink *link); -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_USERLINK_H_EXTERN_INLINE void _hurd_userlink_link (struct hurd_userlink **chainp, struct hurd_userlink *link) @@ -109,7 +109,7 @@ _hurd_userlink_link (struct hurd_userlink **chainp, int _hurd_userlink_unlink (struct hurd_userlink *link); -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_USERLINK_H_EXTERN_INLINE int _hurd_userlink_unlink (struct hurd_userlink *link) { @@ -143,7 +143,7 @@ _hurd_userlink_unlink (struct hurd_userlink *link) int _hurd_userlink_clear (struct hurd_userlink **chainp); -#if defined __USE_EXTERN_INLINES && defined _LIBC +#if defined __USE_EXTERN_INLINES && defined _LIBC && !defined NOT_IN_libc _HURD_USERLINK_H_EXTERN_INLINE int _hurd_userlink_clear (struct hurd_userlink **chainp) { diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c index 661d3b36e3..a69b87df0b 100644 --- a/hurd/hurdsig.c +++ b/hurd/hurdsig.c @@ -47,9 +47,6 @@ thread_t _hurd_msgport_thread; unsigned long int __hurd_sigthread_stack_base; unsigned long int __hurd_sigthread_stack_end; -/* Per-thread signal state. */ -__thread struct hurd_sigstate *_hurd_sigstate; - /* Linked-list of per-thread signal state. */ struct hurd_sigstate *_hurd_sigstates; |