/* Copyright (c) 2010-2011 The Regents of the University of California
 * Barret Rhoden <brho@cs.berkeley.edu>
 * See LICENSE for details.
 *
 * Bits for the kernel interface for event. */

#pragma once

#include <ros/common.h>

/* Event Delivery Flags from the process to the kernel */
#define EVENT_IPI				0x00001	/* IPI the vcore (usually with INDIR) */
#define EVENT_SPAM_PUBLIC		0x00002	/* spam the msg to public vcpd mboxes */
#define EVENT_INDIR				0x00004	/* send an indirection event to vcore */
#define EVENT_VCORE_PRIVATE		0x00008	/* Will go to the private VCPD mbox */
#define EVENT_SPAM_INDIR		0x00010	/* spam INDIRs if the vcore's offline */
#define EVENT_VCORE_MUST_RUN	0x00020	/* spams go to a vcore that will run */
#define EVENT_NOTHROTTLE		0x00040	/* send all INDIRs (no throttling) */
#define EVENT_ROUNDROBIN		0x00080	/* pick a vcore, RR style */
#define EVENT_VCORE_APPRO		0x00100	/* send to where the kernel wants */
#define EVENT_WAKEUP			0x00200	/* wake up the process after sending */

/* Event Message Types */
#define EV_NONE					 0
#define EV_PREEMPT_PENDING		 1
#define EV_GANG_PREMPT_PENDING	 2
#define EV_VCORE_PREEMPT		 3
#define EV_GANG_RETURN			 4
#define EV_USER_IPI				 5
#define EV_PAGE_FAULT			 6
#define EV_ALARM				 7
#define EV_EVENT				 8
#define EV_FREE_APPLE_PIE		 9
#define EV_SYSCALL				10
#define EV_CHECK_MSGS			11
#define EV_POSIX_SIGNAL			12
#define NR_EVENT_TYPES			25 /* keep me last (and 1 > the last one) */

/* Will probably have dynamic notifications later */
#define MAX_NR_DYN_EVENT		25
#define MAX_NR_EVENT			(NR_EVENT_TYPES + MAX_NR_DYN_EVENT)

/* Want to keep this small and generic, but add items as you need them.  One
 * item some will need is an expiration time, which ought to be put in the 64
 * bit arg.  Will need tweaking / thought as we come up with events.  These are
 * what get put on the per-core queue in procdata. */
struct event_msg {
	uint16_t					ev_type;
	uint16_t					ev_arg1;
	uint32_t					ev_arg2;
	void						*ev_arg3;
	uint64_t					ev_arg4;
};
