[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
- Confusing definitions and declarations of mig_dealloc_reply_port(), Svante Signell, 2015/11/03
- Message not available
- Re: Confusing definitions and declarations of mig_dealloc_reply_port(), Svante Signell, 2015/11/04
- Re: Confusing definitions and declarations of mig_dealloc_reply_port(), Diego Nieto Cid, 2015/11/04
- Re: Confusing definitions and declarations of mig_dealloc_reply_port(), Samuel Thibault, 2015/11/04
- Re: Confusing definitions and declarations of mig_dealloc_reply_port(), Svante Signell, 2015/11/04
- Re: Confusing definitions and declarations of mig_dealloc_reply_port(), Samuel Thibault, 2015/11/04
- Re: Confusing definitions and declarations of mig_dealloc_reply_port(), Diego Nieto Cid, 2015/11/04
- Re: Confusing definitions and declarations of mig_dealloc_reply_port(), Svante Signell, 2015/11/05
- Re: Confusing definitions and declarations of mig_dealloc_reply_port(),
Pino Toscano <=
- Re: Confusing definitions and declarations of mig_dealloc_reply_port(), Svante Signell, 2015/11/05
- Re: Confusing definitions and declarations of mig_dealloc_reply_port(), Samuel Thibault, 2015/11/06
- Re: Confusing definitions and declarations of mig_dealloc_reply_port(), Svante Signell, 2015/11/06
- Re: Confusing definitions and declarations of mig_dealloc_reply_port(), Samuel Thibault, 2015/11/06