commit-hurd
[Top][All Lists]
Advanced

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

[hurd] 15/25: libmachdev: improve the demuxer functions


From: Samuel Thibault
Subject: [hurd] 15/25: libmachdev: improve the demuxer functions
Date: Tue, 27 May 2014 08:32:03 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch dde
in repository hurd.

commit f24cfd85037c2bf4d1c49fde8efe9038064b0e5c
Author: Justus Winter <address@hidden>
Date:   Fri Apr 11 22:45:05 2014 +0200

    libmachdev: improve the demuxer functions
    
    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.  The reply message has already been properly initialized in
    libports, so there is no need to call mig_reply_setup.
    
    * libmachdev/ds_routines.c (demuxer): Improve the demuxer function.
    * libmachdev/trivfs_server.c (demuxer): Likewise.
---
 libmachdev/ds_routines.c   | 14 +++++++++-----
 libmachdev/trivfs_server.c | 17 +++++++++++------
 2 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/libmachdev/ds_routines.c b/libmachdev/ds_routines.c
index bbf5488..0e431a3 100644
--- a/libmachdev/ds_routines.c
+++ b/libmachdev/ds_routines.c
@@ -360,11 +360,15 @@ void mach_device_init()
 static int
 demuxer (mach_msg_header_t *inp, mach_msg_header_t *outp)
 {
-  int ret;
-  extern int device_server (mach_msg_header_t *, mach_msg_header_t *);
-  extern int notify_server (mach_msg_header_t *, mach_msg_header_t *);
-  ret = device_server (inp, outp) || notify_server (inp, outp);
-  return ret;
+  mig_routine_t routine;
+  if ((routine = device_server_routine (inp)) ||
+      (routine = notify_server_routine (inp)))
+    {
+      (*routine) (inp, outp);
+      return TRUE;
+    }
+  else
+    return FALSE;
 }
 
 void reg_dev_emul (struct device_emulation_ops *ops)
diff --git a/libmachdev/trivfs_server.c b/libmachdev/trivfs_server.c
index 6d5b3ad..0d7fe24 100644
--- a/libmachdev/trivfs_server.c
+++ b/libmachdev/trivfs_server.c
@@ -125,12 +125,17 @@ trivfs_goaway (struct trivfs_control *fsys, int flags)
 static int
 demuxer (mach_msg_header_t *inp, mach_msg_header_t *outp)
 {
-  int ret;
-  extern int device_server (mach_msg_header_t *, mach_msg_header_t *);
-  extern int notify_server (mach_msg_header_t *, mach_msg_header_t *);
-  ret = device_server (inp, outp) || notify_server (inp, outp)
-    || trivfs_demuxer (inp, outp);
-  return ret;
+  mig_routine_t routine;
+  if ((routine = device_server_routine (inp)) ||
+      (routine = notify_server_routine (inp)) ||
+      (routine = NULL, trivfs_demuxer (inp, outp)))
+    {
+      if (routine)
+        (*routine) (inp, outp);
+      return TRUE;
+    }
+  else
+    return FALSE;
 }
 
 void

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

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