#ifndef XPC_MSG_H_ #define XPC_MSG_H_ #include #include #include #include #define XPC_MSG_MAGIC 0x5850434D typedef struct xpc_msg_header { uint32_t hdr_magic; uint32_t hdr_interface; uint16_t hdr_func; uint16_t hdr_status; } xpc_msg_header_t; typedef struct xpc_msg { xpc_endpoint_t msg_sender; xpc_msg_header_t msg_header; size_t msg_handles_count; kern_msg_handle_t msg_handles[KERN_MSG_MAX_HANDLES]; } xpc_msg_t; extern void xpc_msg_header_init( xpc_msg_header_t *msg, unsigned long interface, unsigned short func); extern bool xpc_msg_header_validate(const xpc_msg_header_t *msg); extern kern_status_t xpc_msg_recv(kern_handle_t channel, xpc_msg_t *out); extern kern_status_t xpc_msg_read( const xpc_msg_t *msg, size_t offset, void *p, size_t count); extern kern_status_t xpc_msg_write( const xpc_msg_t *msg, size_t offset, const void *p, size_t count); extern kern_status_t xpc_msg_reply( const xpc_msg_t *msg, kern_iovec_t *iov, size_t iov_count, kern_msg_handle_t *handles, size_t handle_count); extern kern_status_t xpc_msg_reply_error( const xpc_msg_t *msg, unsigned short code); #endif