about summary refs log tree commit diff
path: root/sysdeps/mach
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2015-09-16 19:41:14 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2015-09-16 19:41:36 +0200
commitbb95a72318e747ce8854e161cc590e67ac17f4f9 (patch)
tree2f0b0af6735b1fc4a90f6a4de6951a3afff0b79f /sysdeps/mach
parentc88b3da93e4b6ff1dd8c6192e358aa60b98114dc (diff)
downloadglibc-bb95a72318e747ce8854e161cc590e67ac17f4f9.tar.gz
glibc-bb95a72318e747ce8854e161cc590e67ac17f4f9.tar.xz
glibc-bb95a72318e747ce8854e161cc590e67ac17f4f9.zip
Cache the host port like we cache the task port
This way we do not
need to call the kernel just to get the port.  Furthermore, we no
longer increase the reference count on every invocation of
`mach_host_self'.

* mach/mach/mach_traps.h (__mach_host_self, mach_host_self):
Protect declarations against the macro expansion.
* mach/mach_init.c (__mach_host_self_): New variable.
(mach_init): Initialize `__mach_host_self_'.
* mach/mach_init.h (__mach_host_self_): New declaration.
(__mach_host_self, mach_host_self): New macros.
* sysdeps/mach/hurd/dl-sysdep.c (_dl_sysdep_start_cleanup):
Release reference.
Diffstat (limited to 'sysdeps/mach')
-rw-r--r--sysdeps/mach/hurd/dl-sysdep.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c
index 8bb9fad090..317605b425 100644
--- a/sysdeps/mach/hurd/dl-sysdep.c
+++ b/sysdeps/mach/hurd/dl-sysdep.c
@@ -279,6 +279,7 @@ _dl_sysdep_start_cleanup (void)
      __mach_init.  We are done with them now, and the user will
      reacquire them for himself when he wants them.  */
   __mig_dealloc_reply_port (MACH_PORT_NULL);
+  __mach_port_deallocate (__mach_task_self (), __mach_host_self_);
   __mach_port_deallocate (__mach_task_self (), __mach_task_self_);
 }