bug-hurd
[Top][All Lists]
Advanced

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

Re: [PATCH 6/7] add conversion helpers for invalid mach port names


From: Samuel Thibault
Subject: Re: [PATCH 6/7] add conversion helpers for invalid mach port names
Date: Wed, 18 Jan 2023 02:28:10 +0100
User-agent: NeoMutt/20170609 (1.8.3)

Applied, thanks!

Luca Dariz, le lun. 16 janv. 2023 11:58:56 +0100, a ecrit:
> * include/mach/port.h: add _NAME_ variants for port NULL and DEAD and
>   add helpers to check for invalid  port names
> * ipc/port.h: add helpers to properly convert to/from invalid mach
>   port names.
> ---
>  include/mach/port.h |  8 ++++++--
>  ipc/port.h          | 20 ++++++++++++++++++++
>  2 files changed, 26 insertions(+), 2 deletions(-)
> 
> diff --git a/include/mach/port.h b/include/mach/port.h
> index e38be614..c9bbcf17 100644
> --- a/include/mach/port.h
> +++ b/include/mach/port.h
> @@ -72,9 +72,13 @@ typedef int *rpc_signature_info_t;
>  
>  #define MACH_PORT_NULL               0 /* works with both user and kernel 
> ports */
>  #define MACH_PORT_DEAD               ((mach_port_t) ~0)
> +#define MACH_PORT_NAME_NULL  ((mach_port_name_t) 0)
> +#define MACH_PORT_NAME_DEAD  ((mach_port_name_t) ~0)
>  
> -#define      MACH_PORT_VALID(name)   \
> -             (((name) != MACH_PORT_NULL) && ((name) != MACH_PORT_DEAD))
> +#define      MACH_PORT_VALID(port)   \
> +             (((port) != MACH_PORT_NULL) && ((port) != MACH_PORT_DEAD))
> +#define      MACH_PORT_NAME_VALID(name)      \
> +             (((name) != MACH_PORT_NAME_NULL) && ((name) != 
> MACH_PORT_NAME_DEAD))
>  
>  /*
>   *  These are the different rights a task may have.
> diff --git a/ipc/port.h b/ipc/port.h
> index 9ef586c1..c85685d7 100644
> --- a/ipc/port.h
> +++ b/ipc/port.h
> @@ -39,6 +39,7 @@
>  #ifndef      _IPC_PORT_H_
>  #define _IPC_PORT_H_
>  
> +#include <kern/debug.h>
>  #include <mach/port.h>
>  
>  /*
> @@ -83,4 +84,23 @@ typedef mach_port_name_t mach_port_gen_t;  /* generation 
> numbers */
>  #define      MACH_PORT_UREFS_UNDERFLOW(urefs, delta)                         
> \
>               (((delta) < 0) && (-(delta) > (urefs)))
>  
> +
> +static inline mach_port_t invalid_name_to_port(mach_port_name_t name)
> +{
> +  if (name == MACH_PORT_NAME_NULL)
> +    return MACH_PORT_NULL;
> +  if (name == MACH_PORT_NAME_DEAD)
> +    return MACH_PORT_DEAD;
> +  panic("invalid_name_to_port() called with a valid port");
> +}
> +
> +static inline mach_port_name_t invalid_port_to_name(mach_port_t port)
> +{
> +  if (port == MACH_PORT_NULL)
> +    return MACH_PORT_NAME_NULL;
> +  if (port == MACH_PORT_DEAD)
> +    return MACH_PORT_NAME_DEAD;
> +  panic("invalid_port_to_name() called with a valid name");
> +}
> +
>  #endif       /* _IPC_PORT_H_ */
> -- 
> 2.30.2
> 
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.



reply via email to

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