/* __audit_mq_sendrecv - record audit data for a POSIX MQ timed send/receive @mqdes: MQ descriptor @msg_len: Message length @msg_prio: Message priority @abs_timeout: Message timeout in absolute time  */
void __audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec *abs_timeout)
/* __audit_mq_sendrecv - record audit data for a POSIX MQ timed send/receive @mqdes: MQ descriptor @msg_len: Message length @msg_prio: Message priority @abs_timeout: Message timeout in absolute time  */
void __audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec *abs_timeout)
{
	struct audit_context *context = current->audit_context;
	struct timespec *p = &context->mq_sendrecv.abs_timeout;
	if (abs_timeout)
		memcpy(p, abs_timeout, sizeof(struct timespec));
	else
		memset(p, 0, sizeof(struct timespec));
	context->mq_sendrecv.mqdes = mqdes;
	context->mq_sendrecv.msg_len = msg_len;
	context->mq_sendrecv.msg_prio = msg_prio;
	context->type = AUDIT_MQ_SENDRECV;
}