Author: sthibault Date: 2015-09-20 11:23:54 +0000 (Sun, 20 Sep 2015) New Revision: 6599
Added: glibc-package/branches/glibc-2.22/debian/patches/hurd-i386/cvs-cache-mach_host_self.diff Modified: glibc-package/branches/glibc-2.22/debian/changelog glibc-package/branches/glibc-2.22/debian/patches/series Log: port r6597 from trunk: hurd-i386/cvs-cache-mach_host_self.diff: avoid port count issue on the host port. Modified: glibc-package/branches/glibc-2.22/debian/changelog =================================================================== --- glibc-package/branches/glibc-2.22/debian/changelog 2015-09-20 11:23:16 UTC (rev 6598) +++ glibc-package/branches/glibc-2.22/debian/changelog 2015-09-20 11:23:54 UTC (rev 6599) @@ -380,6 +380,8 @@ * patches/hurd-i386/cvs-bootstrap.diff: Fix typo. * libc0.3.symbols.hurd-i386: Remove internal _server_routine symbols, fixes build with newer mig. + * patches/hurd-i386/cvs-cache-mach_host_self.diff: New patch to avoid port + count issue on the host port. -- Samuel Thibault <sthiba...@debian.org> Sun, 13 Sep 2015 19:50:50 +0200 Added: glibc-package/branches/glibc-2.22/debian/patches/hurd-i386/cvs-cache-mach_host_self.diff =================================================================== --- glibc-package/branches/glibc-2.22/debian/patches/hurd-i386/cvs-cache-mach_host_self.diff (rev 0) +++ glibc-package/branches/glibc-2.22/debian/patches/hurd-i386/cvs-cache-mach_host_self.diff 2015-09-20 11:23:54 UTC (rev 6599) @@ -0,0 +1,89 @@ +From: Justus Winter <4win...@informatik.uni-hamburg.de> +Subject: [PATCH glibc 1/2] mach: cache the host port + +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. +--- + mach/mach/mach_traps.h | 7 ++++--- + mach/mach_init.c | 2 ++ + mach/mach_init.h | 5 +++++ + sysdeps/mach/hurd/dl-sysdep.c | 1 + + 4 files changed, 12 insertions(+), 3 deletions(-) + +Index: glibc-2.19/mach/mach/mach_traps.h +=================================================================== +--- glibc-2.19.orig/mach/mach/mach_traps.h ++++ glibc-2.19/mach/mach/mach_traps.h +@@ -41,9 +41,10 @@ extern mach_port_t __mach_thread_self (v + extern mach_port_t (mach_task_self) (void); + extern mach_port_t (__mach_task_self) (void); + +-/* Return the host information port for the host of the calling task. */ +-extern mach_port_t mach_host_self (void); +-extern mach_port_t __mach_host_self (void); ++/* Return the host information port for the host of the calling task. ++ The parens are needed to protect against the macro in <mach_init.h>. */ ++extern mach_port_t (mach_host_self) (void); ++extern mach_port_t (__mach_host_self) (void); + + /* Attempt to context switch the current thread off the processor. Returns + true if there are other threads that can be run and false if not. */ +Index: glibc-2.19/mach/mach_init.c +=================================================================== +--- glibc-2.19.orig/mach/mach_init.c ++++ glibc-2.19/mach/mach_init.c +@@ -20,6 +20,7 @@ + #include <unistd.h> + + mach_port_t __mach_task_self_; ++mach_port_t __mach_host_self_; + vm_size_t __vm_page_size = 0; /* Must be data not bss for weak alias. */ + weak_alias (__vm_page_size, vm_page_size) + +@@ -34,6 +35,7 @@ __mach_init (void) + kern_return_t err; + + __mach_task_self_ = (__mach_task_self) (); ++ __mach_host_self_ = (__mach_host_self) (); + __mig_init (0); + + #if HAVE_HOST_PAGE_SIZE +Index: glibc-2.19/mach/mach_init.h +=================================================================== +--- glibc-2.19.orig/mach/mach_init.h ++++ glibc-2.19/mach/mach_init.h +@@ -31,6 +31,11 @@ extern mach_port_t __mach_task_self_; + #define __mach_task_self() (__mach_task_self_ + 0) /* Not an lvalue. */ + #define mach_task_self() (__mach_task_self ()) + ++/* This cache is initialized at startup. */ ++extern mach_port_t __mach_host_self_; ++#define __mach_host_self() (__mach_host_self_ + 0) /* Not an lvalue. */ ++#define mach_host_self() (__mach_host_self ()) ++ + /* Kernel page size. */ + extern vm_size_t __vm_page_size; + extern vm_size_t vm_page_size; +Index: glibc-2.19/sysdeps/mach/hurd/dl-sysdep.c +=================================================================== +--- glibc-2.19.orig/sysdeps/mach/hurd/dl-sysdep.c ++++ glibc-2.19/sysdeps/mach/hurd/dl-sysdep.c +@@ -278,6 +278,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_); + } + Modified: glibc-package/branches/glibc-2.22/debian/patches/series =================================================================== --- glibc-package/branches/glibc-2.22/debian/patches/series 2015-09-20 11:23:16 UTC (rev 6598) +++ glibc-package/branches/glibc-2.22/debian/patches/series 2015-09-20 11:23:54 UTC (rev 6599) @@ -134,6 +134,7 @@ hurd-i386/tg-sysheaders.diff hurd-i386/cvs-bootstrap.diff hurd-i386/local-bootstrap.diff +hurd-i386/cvs-cache-mach_host_self.diff hurd-i386/cvs-csu_crt0.diff hurd-i386/cvs-s_scalbn.diff