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 -+-