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)
#define SYSCALL_EXAMINE(state, callno)
#define MSG_EXAMINE(state, msgid, rcv_name, send_name, option, timeout)

Functions

static void INTR_MSG_BACK_OUT (struct ppc_thread_state *state)

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;                                                        \
  asm (".globl _hurd_intr_rpc_msg_do_trap\n"                          \
       ".globl _hurd_intr_rpc_msg_in_trap\n"                          \
       "                           mr 3, %1\n"                 \
       "                           mr 4, %2\n"                 \
       "                           mr 5, %3\n"                 \
       "                           mr 6, %4\n"                 \
       "                           mr 7, %5\n"                 \
       "                           mr 8, %6\n"                 \
       "                           mr 9, %7\n"                 \
       "                           li 0, -25\n"                \
       "_hurd_intr_rpc_msg_do_trap:       sc\n"                       \
       "_hurd_intr_rpc_msg_in_trap:       mr 3, %0\n"                 \
       : "=r" (err)                                            \
       : "r" (msg), "r" (option), "r" (send_size), "r" (rcv_size),    \
        "r" (rcv_name), "r" (timeout), "r" (notify)                   \
       : "0", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12");   \
  err;                                                         \
})

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

#define MSG_EXAMINE (   state,
  msgid,
  rcv_name,
  send_name,
  option,
  timeout 
)
Value:
({                                                               \
  mach_msg_header_t *msg = (mach_msg_header_t *) (state)->r3;           \
  *(option) = (mach_msg_option_t) (state)->r4;                          \
  *(rcv_name) = (mach_port_t) (state)->r7;                              \
  *(timeout) = (mach_msg_timeout_t) (state)->r8;                 \
  (msg == 0) ?                                                          \
    ({                                                           \
      *(send_name) = MACH_PORT_NULL;                                    \
      *(msgid) = 0;                                              \
      0;                                                         \
    }) :                                                         \
    (_hurdsig_catch_memory_fault (msg) ? -1 :                           \
       ({                                                        \
         *(send_name) = msg->msgh_remote_port;                          \
         *(msgid) = msg->msgh_id;                                \
         _hurdsig_end_catch_fault ();                                   \
         0;                                                      \
       })                                                        \
    );                                                           \
})

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

#define SYSCALL_EXAMINE (   state,
  callno 
)
Value:
({                                                                 \
  u_int32_t *p = (void *) ((state)->srr0 - 4);                            \
  int result;                                                      \
  _hurdsig_catch_memory_fault (p) ? 0 :                                   \
  ({                                                               \
    if (result = (*p == 0x44000002))                                      \
      /* The PC is just after an `sc' instruction.                        \
         This is a system call in progress; %r0 holds the call number.  */  \
      *(callno) = (state)->r0;                                            \
    _hurdsig_end_catch_fault ();                                   \
    result;                                                        \
  });                                                              \
})

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


Function Documentation

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

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

{
  return;
}