#ifndef _IPC_MIG_H_
#define _IPC_MIG_H_
#include <mach/message.h>
#include <sys/kdebug.h>
#ifdef _MIG_TRACE_PARAMETERS_
#define __BeforeRcvCallTrace(msgid,arg1,arg2,arg3,arg4) \
KERNEL_DEBUG_CONSTANT(KDBG_MIGCODE(msgid) | DBG_FUNC_START, \
(unsigned int)(arg1), \
(unsigned int)(arg2), \
(unsigned int)(arg3), \
(unsigned int)(arg4), \
(unsigned int)(0));
#define __AfterRcvCallTrace(msgid,arg1,arg2,arg3,arg4) \
KERNEL_DEBUG_CONSTANT(KDBG_MIGCODE(msgid) | DBG_FUNC_END, \
(unsigned int)(arg1), \
(unsigned int)(arg2), \
(unsigned int)(arg3), \
(unsigned int)(arg4), \
(unsigned int)(0));
#define __BeforeSimpleCallTrace(msgid,arg1,arg2,arg3,arg4) \
KERNEL_DEBUG_CONSTANT(KDBG_MIGCODE(msgid) | DBG_FUNC_START, \
(unsigned int)(arg1), \
(unsigned int)(arg2), \
(unsigned int)(arg3), \
(unsigned int)(arg4), \
(unsigned int)(0));
#define __AfterSimpleCallTrace(msgid,arg1,arg2,arg3,arg4) \
KERNEL_DEBUG_CONSTANT(KDBG_MIGCODE(msgid) | DBG_FUNC_END, \
(unsigned int)(arg1), \
(unsigned int)(arg2), \
(unsigned int)(arg3), \
(unsigned int)(arg4), \
(unsigned int)(0));
#else
#define __BeforeRcvRpc(msgid, _NAME_) \
KERNEL_DEBUG_CONSTANT(KDBG_MIGCODE(msgid) | DBG_FUNC_START, \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0));
#define __AfterRcvRpc(msgid, _NAME_) \
KERNEL_DEBUG_CONSTANT(KDBG_MIGCODE(msgid) | DBG_FUNC_END, \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0));
#define __BeforeRcvSimple(msgid, _NAME_) \
KERNEL_DEBUG_CONSTANT(KDBG_MIGCODE(msgid) | DBG_FUNC_START, \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0));
#define __AfterRcvSimple(msgid, _NAME_) \
KERNEL_DEBUG_CONSTANT(KDBG_MIGCODE(msgid) | DBG_FUNC_END, \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0));
#endif
#define _MIG_MSGID_INVALID(msgid) \
KERNEL_DEBUG_CONSTANT(MACHDBG_CODE(DBG_MACH_MSGID_INVALID, (msgid)), \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0), \
(unsigned int)(0))
extern mach_msg_return_t mach_msg_send_from_kernel(
mach_msg_header_t *msg,
mach_msg_size_t send_size);
extern mach_msg_return_t mach_msg_rpc_from_kernel(
mach_msg_header_t *msg,
mach_msg_size_t send_size,
mach_msg_size_t rcv_size);
extern void mach_msg_receive_continue(void);
#endif