Event helpers for userspace
[akaros.git] / user / include / event.h
1 /* Copyright (c) 2011 The Regents of the University of California
2  * Barret Rhoden <brho@cs.berkeley.edu>
3  * See LICENSE for details.
4  *
5  * Userspace utility functions for receiving events and notifications (IPIs).
6  * Some are higher level than others; just use what you need. */ 
7
8 #ifndef _EVENT_H
9 #define _EVENT_H
10
11 #include <ros/event.h>
12 #include <ros/common.h>
13
14 /********* Event_q Setup / Registration  ***********/
15 struct event_queue *get_big_event_q(void);
16 void put_big_event_q(struct event_queue *ev_q);
17 struct event_queue *get_event_q(void);
18 struct event_queue *get_event_q_vcpd(uint32_t vcoreid);
19 void put_event_q(struct event_queue *ev_q);
20 void register_kevent_q(struct event_queue *ev_q, unsigned int ev_type);
21 struct event_queue *clear_kevent_q(unsigned int ev_type);
22 void enable_kevent(unsigned int ev_type, uint32_t vcoreid, bool ipi);
23 void disable_kevent(unsigned int ev_type);
24
25 /********* Event Handling / Reception ***********/
26 bool event_activity(struct event_mbox *ev_mbox, int flags);
27 unsigned int event_clear_overflows(struct event_queue *ev_q);
28 unsigned int get_event_type(struct event_mbox *ev_mbox);
29
30 #endif /* _EVENT_H */