GNU MIG recently gained support for emitting x_server_routine declarations in the generated server header file. Using this declaration, the x_server_routine functions can be inlined into the demuxer function.
* pflocal/demuxer.c: Include the mig-generated server headers. * pflocal/sserver.c: Likewise. --- pflocal/pflocal.c | 3 +-- pflocal/sserver.c | 10 +++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/pflocal/pflocal.c b/pflocal/pflocal.c index d51f721..fcb62d1 100644 --- a/pflocal/pflocal.c +++ b/pflocal/pflocal.c @@ -46,13 +46,12 @@ int trivfs_protid_nportclasses = 1; int trivfs_cntl_nportclasses = 1; /* ---------------------------------------------------------------- */ +#include "socket_S.h" /* A demuxer to separate out pf-level operations on our node. */ static int pf_demuxer (mach_msg_header_t *inp, mach_msg_header_t *outp) { - mig_routine_t socket_server_routine (mach_msg_header_t *); - mig_routine_t routine; if ((routine = socket_server_routine (inp)) || (routine = NULL, trivfs_demuxer (inp, outp))) diff --git a/pflocal/sserver.c b/pflocal/sserver.c index 4ce26b1..7df69a4 100644 --- a/pflocal/sserver.c +++ b/pflocal/sserver.c @@ -32,15 +32,15 @@ struct port_bucket *sock_port_bucket; static int sock_server_active = 0; static pthread_spinlock_t sock_server_active_lock = PTHREAD_SPINLOCK_INITIALIZER; +#include "io_S.h" +#include "socket_S.h" +#include "../libports/interrupt_S.h" +#include "../libports/notify_S.h" + /* A demuxer for socket operations. */ static int sock_demuxer (mach_msg_header_t *inp, mach_msg_header_t *outp) { - mig_routine_t io_server_routine (mach_msg_header_t *); - mig_routine_t socket_server_routine (mach_msg_header_t *); - mig_routine_t ports_interrupt_server_routine (mach_msg_header_t *); - mig_routine_t ports_notify_server_routine (mach_msg_header_t *); - mig_routine_t routine; if ((routine = io_server_routine (inp)) || (routine = socket_server_routine (inp)) || -- 1.7.10.4