bug-hurd
[Top][All Lists]
Advanced

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

Re: [PATCH hurd 08/30] libtrivfs: add payload-aware intrans functions


From: Samuel Thibault
Subject: Re: [PATCH hurd 08/30] libtrivfs: add payload-aware intrans functions
Date: Tue, 2 Dec 2014 01:03:29 +0100
User-agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)

Justus Winter, le Thu 27 Nov 2014 14:18:48 +0100, a écrit :
> * libtrivfs/mig-decls.h (trivfs_begin_using_protid_payload): New function.
> (trivfs_begin_using_control_payload): Likewise.
> * libtrivfs/mig-mutate.h: Add mutators.

Ack.

> ---
>  libtrivfs/mig-decls.h  | 58 
> ++++++++++++++++++++++++++++++++++++++++++++++++++
>  libtrivfs/mig-mutate.h |  3 +++
>  2 files changed, 61 insertions(+)
> 
> diff --git a/libtrivfs/mig-decls.h b/libtrivfs/mig-decls.h
> index 2baaee8..13a9eb7 100644
> --- a/libtrivfs/mig-decls.h
> +++ b/libtrivfs/mig-decls.h
> @@ -61,6 +61,35 @@ trivfs_begin_using_protid (mach_port_t port)
>      return ports_lookup_port (0, port, 
> trivfs_dynamic_protid_port_classes[0]);
>  }
>  
> +static inline struct trivfs_protid * __attribute__ ((unused))
> +trivfs_begin_using_protid_payload (unsigned long payload)
> +{
> +  if (trivfs_protid_nportclasses + trivfs_num_dynamic_protid_port_classes > 
> 1)
> +    {
> +      struct port_info *pi = ports_lookup_payload (NULL, payload, NULL);
> +      int i;
> +
> +      if (pi)
> +     {
> +       for (i = 0; i < trivfs_protid_nportclasses; i++)
> +         if (pi->class == trivfs_protid_portclasses[i])
> +           return (struct trivfs_protid *) pi;
> +       for (i = 0; i < trivfs_num_dynamic_protid_port_classes; i++)
> +         if (pi->class == trivfs_dynamic_protid_port_classes[i])
> +           return (struct trivfs_protid *) pi;
> +       ports_port_deref (pi);
> +     }
> +
> +      return NULL;
> +    }
> +  else if (trivfs_protid_nportclasses == 1)
> +    return ports_lookup_payload (NULL, payload,
> +                              trivfs_protid_portclasses[0]);
> +  else
> +    return ports_lookup_payload (NULL, payload,
> +                              trivfs_dynamic_protid_port_classes[0]);
> +}
> +
>  static inline void __attribute__ ((unused))
>  trivfs_end_using_protid (struct trivfs_protid *cred)
>  {
> @@ -95,6 +124,35 @@ trivfs_begin_using_control (mach_port_t port)
>      return ports_lookup_port (0, port, 
> trivfs_dynamic_control_port_classes[0]);
>  }
>  
> +static inline struct trivfs_control * __attribute__ ((unused))
> +trivfs_begin_using_control_payload (unsigned long payload)
> +{
> +  if (trivfs_cntl_nportclasses + trivfs_num_dynamic_control_port_classes > 1)
> +    {
> +      struct port_info *pi = ports_lookup_payload (NULL, payload, NULL);
> +      int i;
> +
> +      if (pi)
> +     {
> +       for (i = 0; i < trivfs_cntl_nportclasses; i++)
> +         if (pi->class == trivfs_cntl_portclasses[i])
> +           return (struct trivfs_control *) pi;
> +       for (i = 0; i < trivfs_num_dynamic_control_port_classes; i++)
> +         if (pi->class == trivfs_dynamic_control_port_classes[i])
> +           return (struct trivfs_control *) pi;
> +       ports_port_deref (pi);
> +     }
> +
> +      return NULL;
> +    }
> +  else if (trivfs_cntl_nportclasses == 1)
> +    return ports_lookup_payload (NULL, payload,
> +                              trivfs_cntl_portclasses[0]);
> +  else
> +    return ports_lookup_payload (NULL, payload,
> +                              trivfs_dynamic_control_port_classes[0]);
> +}
> +
>  static inline void __attribute__ ((unused))
>  trivfs_end_using_control (struct trivfs_control *cred)
>  {
> diff --git a/libtrivfs/mig-mutate.h b/libtrivfs/mig-mutate.h
> index cc15d38..dcbebf6 100644
> --- a/libtrivfs/mig-mutate.h
> +++ b/libtrivfs/mig-mutate.h
> @@ -20,13 +20,16 @@
>  #define REPLY_PORTS
>  
>  #define FILE_INTRAN trivfs_protid_t trivfs_begin_using_protid (file_t)
> +#define FILE_INTRAN_PAYLOAD trivfs_protid_t trivfs_begin_using_protid_payload
>  #define FILE_DESTRUCTOR trivfs_end_using_protid (trivfs_protid_t)
>  #define FILE_IMPORTS import "libtrivfs/mig-decls.h";
>  
>  #define IO_INTRAN trivfs_protid_t trivfs_begin_using_protid (io_t)
> +#define IO_INTRAN_PAYLOAD trivfs_protid_t trivfs_begin_using_protid_payload
>  #define IO_DESTRUCTOR trivfs_end_using_protid (trivfs_protid_t)
>  #define IO_IMPORTS import "libtrivfs/mig-decls.h";
>  
>  #define FSYS_INTRAN trivfs_control_t trivfs_begin_using_control (fsys_t)
> +#define FSYS_INTRAN_PAYLOAD trivfs_control_t 
> trivfs_begin_using_control_payload
>  #define FSYS_DESTRUCTOR trivfs_end_using_control (trivfs_control_t)
>  #define FSYS_IMPORTS import "libtrivfs/mig-decls.h";
> -- 
> 2.1.3
> 

-- 
Samuel
<b> lisons de l'assembleur c
 -+- #sos - CrisC forever -+-



reply via email to

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