1 /* 2 * FIFO-based event channel ABI. 3 * 4 * Copyright (C) 2013 Citrix Systems R&D Ltd. 5 * 6 * This source code is licensed under the GNU General Public License, 7 * Version 2 or later. See the file COPYING for more details. 8 */ 9 #ifndef __XEN_EVENT_FIFO_H__ 10 #define __XEN_EVENT_FIFO_H__ 11 12 struct evtchn_fifo_queue { 13 uint32_t *head; /* points into control block */ 14 uint32_t tail; 15 uint8_t priority; 16 spinlock_t lock; 17 }; 18 19 struct evtchn_fifo_vcpu { 20 struct evtchn_fifo_control_block *control_block; 21 struct evtchn_fifo_queue queue[EVTCHN_FIFO_MAX_QUEUES]; 22 }; 23 24 #define EVTCHN_FIFO_EVENT_WORDS_PER_PAGE (PAGE_SIZE / sizeof(event_word_t)) 25 #define EVTCHN_FIFO_MAX_EVENT_ARRAY_PAGES \ 26 (EVTCHN_FIFO_NR_CHANNELS / EVTCHN_FIFO_EVENT_WORDS_PER_PAGE) 27 28 struct evtchn_fifo_domain { 29 event_word_t *event_array[EVTCHN_FIFO_MAX_EVENT_ARRAY_PAGES]; 30 unsigned int num_evtchns; 31 }; 32 33 int evtchn_fifo_init_control(struct evtchn_init_control *init_control); 34 int evtchn_fifo_expand_array(const struct evtchn_expand_array *expand_array); 35 void evtchn_fifo_destroy(struct domain *domain); 36 37 #endif /* __XEN_EVENT_FIFO_H__ */ 38 39 /* 40 * Local variables: 41 * mode: C 42 * c-file-style: "BSD" 43 * c-basic-offset: 4 44 * tab-width: 4 45 * indent-tabs-mode: nil 46 * End: 47 */ 48