/* Copyright (c) 2009 The Regents of the University of California.
 * See the COPYRIGHT files at the top of this source tree for full
 * license information.
 *
 * Kevin Klues <klueska@cs.berkeley.edu>
 */

#pragma once

#include <ros/ring_buffer.h>
#include <ros/arch/mmu.h>


typedef enum {
	SYS_begofevents, //Should always be first

	SYS_shared_page_alloc_event,
	SYS_shared_page_free_event,

	SYS_endofevents //Should always be last
} sysevent_type_t;

#define NUM_SYSEVENT_ARGS 6
typedef struct sysevent {
	sysevent_type_t type;
	uint32_t args[NUM_SYSEVENT_ARGS];
} sysevent_t;

typedef struct sysevent_rsp {
	int rsp;
} sysevent_rsp_t;

// Generic Sysevent Ring Buffer
#define SYSEVENTRINGSIZE    PGSIZE
DEFINE_RING_TYPES(sysevent, sysevent_t, sysevent_rsp_t);
