|
@@ -190,6 +190,39 @@ struct evtchn_reset {
|
|
|
};
|
|
|
typedef struct evtchn_reset evtchn_reset_t;
|
|
|
|
|
|
+/*
|
|
|
+ * EVTCHNOP_init_control: initialize the control block for the FIFO ABI.
|
|
|
+ */
|
|
|
+#define EVTCHNOP_init_control 11
|
|
|
+struct evtchn_init_control {
|
|
|
+ /* IN parameters. */
|
|
|
+ uint64_t control_gfn;
|
|
|
+ uint32_t offset;
|
|
|
+ uint32_t vcpu;
|
|
|
+ /* OUT parameters. */
|
|
|
+ uint8_t link_bits;
|
|
|
+ uint8_t _pad[7];
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * EVTCHNOP_expand_array: add an additional page to the event array.
|
|
|
+ */
|
|
|
+#define EVTCHNOP_expand_array 12
|
|
|
+struct evtchn_expand_array {
|
|
|
+ /* IN parameters. */
|
|
|
+ uint64_t array_gfn;
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * EVTCHNOP_set_priority: set the priority for an event channel.
|
|
|
+ */
|
|
|
+#define EVTCHNOP_set_priority 13
|
|
|
+struct evtchn_set_priority {
|
|
|
+ /* IN parameters. */
|
|
|
+ uint32_t port;
|
|
|
+ uint32_t priority;
|
|
|
+};
|
|
|
+
|
|
|
struct evtchn_op {
|
|
|
uint32_t cmd; /* EVTCHNOP_* */
|
|
|
union {
|
|
@@ -207,4 +240,39 @@ struct evtchn_op {
|
|
|
};
|
|
|
DEFINE_GUEST_HANDLE_STRUCT(evtchn_op);
|
|
|
|
|
|
+/*
|
|
|
+ * 2-level ABI
|
|
|
+ */
|
|
|
+
|
|
|
+#define EVTCHN_2L_NR_CHANNELS (sizeof(xen_ulong_t) * sizeof(xen_ulong_t) * 64)
|
|
|
+
|
|
|
+/*
|
|
|
+ * FIFO ABI
|
|
|
+ */
|
|
|
+
|
|
|
+/* Events may have priorities from 0 (highest) to 15 (lowest). */
|
|
|
+#define EVTCHN_FIFO_PRIORITY_MAX 0
|
|
|
+#define EVTCHN_FIFO_PRIORITY_DEFAULT 7
|
|
|
+#define EVTCHN_FIFO_PRIORITY_MIN 15
|
|
|
+
|
|
|
+#define EVTCHN_FIFO_MAX_QUEUES (EVTCHN_FIFO_PRIORITY_MIN + 1)
|
|
|
+
|
|
|
+typedef uint32_t event_word_t;
|
|
|
+
|
|
|
+#define EVTCHN_FIFO_PENDING 31
|
|
|
+#define EVTCHN_FIFO_MASKED 30
|
|
|
+#define EVTCHN_FIFO_LINKED 29
|
|
|
+#define EVTCHN_FIFO_BUSY 28
|
|
|
+
|
|
|
+#define EVTCHN_FIFO_LINK_BITS 17
|
|
|
+#define EVTCHN_FIFO_LINK_MASK ((1 << EVTCHN_FIFO_LINK_BITS) - 1)
|
|
|
+
|
|
|
+#define EVTCHN_FIFO_NR_CHANNELS (1 << EVTCHN_FIFO_LINK_BITS)
|
|
|
+
|
|
|
+struct evtchn_fifo_control_block {
|
|
|
+ uint32_t ready;
|
|
|
+ uint32_t _rsvd;
|
|
|
+ event_word_t head[EVTCHN_FIFO_MAX_QUEUES];
|
|
|
+};
|
|
|
+
|
|
|
#endif /* __XEN_PUBLIC_EVENT_CHANNEL_H__ */
|