aboutsummaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
Diffstat (limited to 'hurd')
-rw-r--r--hurd/hurd/userlink.h39
1 files changed, 24 insertions, 15 deletions
diff --git a/hurd/hurd/userlink.h b/hurd/hurd/userlink.h
index 4b5ba96..0301658 100644
--- a/hurd/hurd/userlink.h
+++ b/hurd/hurd/userlink.h
@@ -98,13 +98,16 @@ _hurd_userlink_link (struct hurd_userlink **chainp,
link->resource.prevp = chainp;
*chainp = link;
- /* Also chain it on the current thread's list of active resources. */
- thread_chainp = &_hurd_self_sigstate ()->active_resources;
- link->thread.next = *thread_chainp;
- if (link->thread.next)
- link->thread.next->thread.prevp = &link->thread.next;
- link->thread.prevp = thread_chainp;
- *thread_chainp = link;
+ if (!__LIBC_NO_TLS ())
+ {
+ /* Also chain it on the current thread's list of active resources. */
+ thread_chainp = &_hurd_self_sigstate ()->active_resources;
+ link->thread.next = *thread_chainp;
+ if (link->thread.next)
+ link->thread.next->thread.prevp = &link->thread.next;
+ link->thread.prevp = thread_chainp;
+ *thread_chainp = link;
+ }
}
# endif
#endif
@@ -131,11 +134,14 @@ _hurd_userlink_unlink (struct hurd_userlink *link)
if (link->resource.next)
link->resource.next->resource.prevp = link->resource.prevp;
- /* Remove our link from the chain of currently active resources
- for this thread. */
- *link->thread.prevp = link->thread.next;
- if (link->thread.next)
- link->thread.next->thread.prevp = link->thread.prevp;
+ if (!__LIBC_NO_TLS ())
+ {
+ /* Remove our link from the chain of currently active resources
+ for this thread. */
+ *link->thread.prevp = link->thread.next;
+ if (link->thread.next)
+ link->thread.next->thread.prevp = link->thread.prevp;
+ }
return dealloc;
}
@@ -160,9 +166,12 @@ _hurd_userlink_move (struct hurd_userlink *new_link,
new_link->resource.next->resource.prevp = &new_link->resource.next;
*new_link->resource.prevp = new_link;
- if (new_link->thread.next != NULL)
- new_link->thread.next->thread.prevp = &new_link->thread.next;
- *new_link->thread.prevp = new_link;
+ if (!__LIBC_NO_TLS ())
+ {
+ if (new_link->thread.next != NULL)
+ new_link->thread.next->thread.prevp = &new_link->thread.next;
+ *new_link->thread.prevp = new_link;
+ }
}
# endif
#endif