bug-hurd
[Top][All Lists]
Advanced

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

Re: [PATCH 5/5] mach-defpager: improve the default_pager_demux_object fu


From: Samuel Thibault
Subject: Re: [PATCH 5/5] mach-defpager: improve the default_pager_demux_object function
Date: Mon, 24 Feb 2014 22:48:37 -0500
User-agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)

Justus Winter, le Mon 24 Feb 2014 15:41:56 +0100, a écrit :
> Handle multiple request types as recommended by the Mach Server
> Writer's Guide section 4, subsection "Handling Multiple Request
> Types".  This avoids initializing the reply message in every X_server
> function.

Ack.

> 
> * mach-defpager/default_pager.c (default_pager_demux_object): Improve
> the demuxer function.
> ---
>  mach-defpager/default_pager.c | 30 ++++++++++++++++++++----------
>  1 file changed, 20 insertions(+), 10 deletions(-)
> 
> diff --git a/mach-defpager/default_pager.c b/mach-defpager/default_pager.c
> index 805e065..0977a5d 100644
> --- a/mach-defpager/default_pager.c
> +++ b/mach-defpager/default_pager.c
> @@ -54,7 +54,10 @@
>  
>  #include <file_io.h>
>  
> +#include "memory_object_S.h"
> +#include "memory_object_default_S.h"
>  #include "default_pager_S.h"
> +#include "exc_S.h"
>  
>  #define debug 0
>  
> @@ -3019,7 +3022,6 @@ boolean_t default_pager_notify_server(in, out)
>       return TRUE;
>  }
>  
> -extern boolean_t seqnos_memory_object_server();
>  extern boolean_t seqnos_memory_object_default_server();
>  extern boolean_t default_pager_server();
>  extern boolean_t exc_server();
> @@ -3069,15 +3071,23 @@ default_pager_demux_object(in, out)
>        *      the memory_object_default interface.
>        */
>  
> -int rval;
> -ddprintf ("DPAGER DEMUX OBJECT <%p>: %d\n", in, in->msgh_id);
> -rval =
> - (seqnos_memory_object_server(in, out) ||
> -             seqnos_memory_object_default_server(in, out) ||
> -             default_pager_notify_server(in, out) ||
> -                default_pager_server(in, out));
> -ddprintf ("DPAGER DEMUX OBJECT DONE <%p>: %d\n", in, in->msgh_id);
> -return rval;
> +  int rval = FALSE;
> +  ddprintf ("DPAGER DEMUX OBJECT <%p>: %d\n", in, in->msgh_id);
> +  mig_reply_setup (in, out);
> +
> +  mig_routine_t routine;
> +  if ((routine = seqnos_memory_object_server_routine (in)) ||
> +      (routine = seqnos_memory_object_default_server_routine (in)) ||
> +      (routine = NULL, default_pager_notify_server (in, out)) ||
> +      (routine = default_pager_server_routine (in)))
> +    {
> +      if (routine)
> +     (*routine) (in, out);
> +      rval = TRUE;
> +    }
> +
> +  ddprintf ("DPAGER DEMUX OBJECT DONE <%p>: %d\n", in, in->msgh_id);
> +  return rval;
>  }
>  
>  mach_msg_size_t default_pager_msg_size_default = 8 * 1024;
> -- 
> 1.8.5.2
> 

-- 
Samuel
<S> KK1 a 1 conseil de comment s'attaquer a du code java ou ya plus de 50 
classes ? par kel bout ?
<B> le troisième
 -+- #ens-mim en stage -+-



reply via email to

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