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.