bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Confusing definitions and declarations of mig_dealloc_reply_port()


From: Pino Toscano
Subject: Re: Confusing definitions and declarations of mig_dealloc_reply_port()
Date: Thu, 05 Nov 2015 10:43:10 +0100
User-agent: KMail/4.14.9 (Linux/4.1.6-100.fc21.x86_64; KDE/4.14.11; x86_64; ; )

On Thursday 05 November 2015 10:30:27 Svante Signell wrote:
> I agree, the #if 1 part was not OK. What about rewriting
> __mig_get_reply_port() too to be more readable?
> 
> Please tell me if this patch is faulty in some way, I'm still on the
> learning curve.
> 
> Index: glibc-2.19/sysdeps/mach/hurd/mig-reply.c
> ===================================================================
> --- glibc-2.19.orig/sysdeps/mach/hurd/mig-reply.c
> +++ glibc-2.19/sysdeps/mach/hurd/mig-reply.c
> @@ -26,12 +26,13 @@ mach_port_t __hurd_reply_port0;
>  mach_port_t
>  __mig_get_reply_port (void)
>  {
> -  if (__hurd_local_reply_port == MACH_PORT_NULL ||
> -      (&__hurd_local_reply_port != &__hurd_reply_port0
> -       && __hurd_local_reply_port == __hurd_reply_port0))
> -    __hurd_local_reply_port = __mach_reply_port ();
> +  mach_port_t port = __hurd_local_reply_port;
> +  if (port == MACH_PORT_NULL ||
> +      (&__hurd_local_reply_port != &__hurd_reply_port0 &&
> +       port == __hurd_reply_port0))
> +    port = __mach_reply_port ();
>  
> -  return __hurd_local_reply_port;
> +  return port;
>  }

The current version may change __hurd_local_reply_port, while your
proposed version does not.

>  weak_alias (__mig_get_reply_port, mig_get_reply_port)
>  
> @@ -40,6 +41,7 @@ void
>  __mig_dealloc_reply_port (mach_port_t arg)
>  {
>    mach_port_t port = __hurd_local_reply_port;
> +  assert (port == arg || arg == MACH_PORT_NULL);
>    __hurd_local_reply_port = MACH_PORT_NULL;  /* So the mod_refs
> RPC won't use it.  */
>  
>    if (MACH_PORT_VALID (port))
> 
> Samuel: Regarding your previous comment:
> >> Additionally, any strong reason to not change mig??
> > 
> > Having to deal with the introduced incompatibility.
> 
> Incompatibility with what, older versions of glibc/hurd/mach/mig, which
> ones?

If your suggestion is to remove the argument from
__mig_dealloc_reply_port, that isn't an option, as it would be an ABI
break in libc.

-- 
Pino Toscano



reply via email to

[Prev in Thread] Current Thread [Next in Thread]