Back to index

glibc  2.9
Classes | Defines | Functions
intr-msg.h File Reference
#include "hurdfault.h"
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  mach_msg_trap_args

Defines

#define INTR_MSG_TRAP(msg, option, send_size, rcv_size, rcv_name, timeout, notify)

Functions

static void INTR_MSG_BACK_OUT (struct mips_thread_state *state)
static int SYSCALL_EXAMINE (struct mips_thread_state *state, int *callno)
static mach_port_t MSG_EXAMINE (struct mips_thread_state *state, int *msgid)

Class Documentation

struct mach_msg_trap_args

Definition at line 99 of file intr-msg.h.

Class Members
mach_msg_header_t * msg
mach_port_t notify
mach_msg_option_t option
mach_port_t rcv_name
mach_msg_size_t rcv_size
void * retaddr
mach_msg_size_t send_size
mach_msg_timeout_t timeout

Define Documentation

#define INTR_MSG_TRAP (   msg,
  option,
  send_size,
  rcv_size,
  rcv_name,
  timeout,
  notify 
)
Value:
({                                                                   \
  error_t err;                                                              \
  mach_port_t __rcv_name = (rcv_name);                                      \
  mach_msg_timeout_t __timeout = (timeout);                                        \
  mach_port_t __notify = (notify);                                   \
  asm (".globl _hurd_intr_rpc_msg_do_trap\n"                                \
       ".globl _hurd_intr_rpc_msg_in_trap\n"                                \
       "                           move $4, %1\n"                           \
       "                           move $5, %2\n"                           \
       "                           move $6, %3\n"                           \
       "                           move $7, %4\n"                           \
       "                           move $8, %5\n"                           \
       "                           move $9, %6\n"                           \
       "                           move $10, %7\n"                          \
       "                           li $2, -25\n"                     \
       "_hurd_intr_rpc_msg_do_trap:       syscall\n"                        \
       "_hurd_intr_rpc_msg_in_trap:       move %0, $2\n"                           \
       : "=r" (err)                                                  \
       : "r" (msg), "r" (option), "r" (send_size), "r" (rcv_size),          \
         "r" (__rcv_name), "r" (__timeout), "r" (__notify)                  \
       : "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10",       \
         "$11", "$12", "$13", "$14", "$15", "$24", "$25", "$28");           \
  err;                                                               \
})

Definition at line 48 of file intr-msg.h.


Function Documentation

static void INTR_MSG_BACK_OUT ( struct mips_thread_state *  state) [inline, static]

Definition at line 76 of file intr-msg.h.

{
  return;
}

Here is the caller graph for this function:

static mach_port_t MSG_EXAMINE ( struct mips_thread_state *  state,
int msgid 
) [inline, static]

Definition at line 113 of file intr-msg.h.

{
  mach_msg_header_t *msg;
  mach_port_t send_port;

  msg = (mach_msg_header_t *) state->r4;

  if (_hurdsig_catch_memory_fault (msg))
    return MACH_PORT_NULL;
  send_port = msg->msgh_remote_port;
  *msgid = msg->msgh_id;
  _hurdsig_end_catch_fault ();

  return send_port;
}
static int SYSCALL_EXAMINE ( struct mips_thread_state *  state,
int callno 
) [inline, static]

Definition at line 84 of file intr-msg.h.

{
  u_int32_t *p = (void *) (state->pc - 4);
  int result;
  if (_hurdsig_catch_memory_fault (p))
    return 0;
  if (result = (*p == 0x0000000c))
    /* The PC is just after a `syscall' instruction.
       This is a system call in progress; v0($2) holds the call number.  */
    *callno = state->r2;
  _hurdsig_end_catch_fault ();
  return result;
}