Back to index

glibc  2.9
Classes | Functions | Variables
msgportdemux.c File Reference
#include <hurd.h>
#include <hurd/signal.h>
#include <stddef.h>

Go to the source code of this file.


struct  demux


boolean_t __msg_server (mach_msg_header_t *inp, mach_msg_header_t *outp)
static boolean_t msgport_server (mach_msg_header_t *inp, mach_msg_header_t *outp)
void _hurd_msgport_receive (void)


struct demux_hurd_msgport_demuxers = NULL

Function Documentation

boolean_t __msg_server ( mach_msg_header_t *  inp,
mach_msg_header_t *  outp 
void _hurd_msgport_receive ( void  )

Definition at line 56 of file msgportdemux.c.

  /* Get our own sigstate cached so we never again have to take a lock to
     fetch it.  There is much code in hurdsig.c that operates with some
     sigstate lock held, which will deadlock with _hurd_thread_sigstate.

     Furthermore, in the cthreads case this is the convenient spot
     to initialize _hurd_msgport_thread (see hurdsig.c:_hurdsig_init).  */

  _hurd_msgport_thread = _hurd_self_sigstate ()->thread;

  while (1)
    (void) __mach_msg_server (msgport_server, __vm_page_size, _hurd_msgport);

Here is the call graph for this function:

Here is the caller graph for this function:

static boolean_t msgport_server ( mach_msg_header_t *  inp,
mach_msg_header_t *  outp 
) [static]

Definition at line 37 of file msgportdemux.c.

  extern boolean_t _S_msg_server (mach_msg_header_t *inp,
                              mach_msg_header_t *outp);
  extern boolean_t _S_exc_server (mach_msg_header_t *inp,
                              mach_msg_header_t *outp);
  struct demux *d;

  for (d = _hurd_msgport_demuxers; d != NULL; d = d->next)
    if ((*d->demux) (inp, outp))
      return 1;

  return (_S_exc_server (inp, outp) ||
         _S_msg_server (inp, outp));

Here is the caller graph for this function:

Variable Documentation

Definition at line 31 of file msgportdemux.c.