summaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2014-04-22 00:48:02 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2014-04-22 00:48:02 +0200
commit3f5671523f26e6558eef6d0e4fcd2af165634e93 (patch)
tree244d64ab0684179e56a48fe30af0f53f9111900c /hurd
parent54884b5d5a0c8ed3096e7a719e283f28be748882 (diff)
parent995c97876793b4cef279f102949858650baec3ef (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.h2
-rw-r--r--hurd/hurd/port.h12
-rw-r--r--hurd/hurd/signal.h17
-rw-r--r--hurd/hurd/userlink.h6
-rw-r--r--hurd/hurdsig.c3
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;