Lines Matching +full:ctrl +full:- +full:b
2 * Xen event channels (FIFO-based ABI)
49 #include <xen/xen-ops.h>
75 #define EVTCHN_FIFO_BIT(b, w) \ argument
76 (((unsigned long)w & 0x4UL) ? (EVTCHN_FIFO_ ##b + 32) : EVTCHN_FIFO_ ##b)
81 #define EVTCHN_FIFO_BIT(b, w) EVTCHN_FIFO_ ##b argument
112 q->head[i] = 0; in init_control_block()
149 return -EINVAL; in evtchn_fifo_setup()
160 ret = -ENOMEM; in evtchn_fifo_setup()
191 /* no-op */ in evtchn_fifo_bind_to_cpu()
273 static void consume_one_event(unsigned cpu, struct evtchn_loop_ctrl *ctrl, in consume_one_event() argument
282 head = q->head[priority]; in consume_one_event()
289 virt_rmb(); /* Ensure word is up-to-date before reading head. */ in consume_one_event()
290 head = control_block->head[priority]; in consume_one_event()
298 * If the link is non-zero, there are more events in the in consume_one_event()
308 if (unlikely(!ctrl)) in consume_one_event()
311 handle_irq_for_port(port, ctrl); in consume_one_event()
314 q->head[priority] = head; in consume_one_event()
318 struct evtchn_loop_ctrl *ctrl) in __evtchn_fifo_handle_events() argument
326 ready = xchg(&control_block->ready, 0); in __evtchn_fifo_handle_events()
330 consume_one_event(cpu, ctrl, control_block, q, &ready); in __evtchn_fifo_handle_events()
331 ready |= xchg(&control_block->ready, 0); in __evtchn_fifo_handle_events()
336 struct evtchn_loop_ctrl *ctrl) in evtchn_fifo_handle_events() argument
338 __evtchn_fifo_handle_events(cpu, ctrl); in evtchn_fifo_handle_events()
378 int ret = -ENOMEM; in evtchn_fifo_alloc_control_block()
435 pr_info("Using FIFO-based ABI\n"); in xen_evtchn_fifo_init()