Lines Matching +full:kind +full:- +full:of +full:- +full:intr

1 /*-
2 * SPDX-License-Identifier: MIT OR GPL-2.0-only
13 * Permission is hereby granted, free of charge, to any person obtaining a copy
14 * of this source file (the "Software"), to deal in the Software without
16 * merge, publish, distribute, sublicense, and/or sell copies of the Software,
21 * all copies or substantial portions of the Software.
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
46 #include <xen/xen-os.h>
48 #include <machine/xen/arch-intr.h>
94 ++curthread->td_intr_nesting_level; in xen_arch_intr_handle_upcall()
95 old = curthread->td_intr_frame; in xen_arch_intr_handle_upcall()
96 curthread->td_intr_frame = trap_frame; in xen_arch_intr_handle_upcall()
100 curthread->td_intr_frame = old; in xen_arch_intr_handle_upcall()
101 --curthread->td_intr_nesting_level; in xen_arch_intr_handle_upcall()
114 * Lock for x86-related structures. Notably modifying
125 * list of released isrcs
140 if (num_io_irqs > UINT_MAX - NR_EVENT_CHANNELS) in xen_intr_alloc_irqs()
151 "xi_arch MUST be at top of xenisrc for x86"); in xen_intr_pic_enable_source()
156 * Perform any necessary end-of-interrupt acknowledgements.
165 "xi_arch MUST be at top of xenisrc for x86"); in xen_intr_pic_disable_source()
173 /* Nothing to do on end-of-interrupt */ in xen_intr_pic_eoi_source()
181 "xi_arch MUST be at top of xenisrc for x86"); in xen_intr_pic_enable_intr()
190 "xi_arch MUST be at top of xenisrc for x86"); in xen_intr_pic_disable_intr()
207 "xi_arch MUST be at top of xenisrc for x86"); in xen_intr_pic_vector()
209 return (((struct xenisrc *)isrc)->xi_arch.vector); in xen_intr_pic_vector()
218 * \returns 0 if no events are pending, otherwise non-zero.
249 * Perform configuration of an interrupt source.
255 * \returns 0 if no events are pending, otherwise non-zero.
271 "xi_arch MUST be at top of xenisrc for x86"); in xen_intr_pic_assign_cpu()
300 mtx_init(&xen_intr_x86_lock, "xen-x86-table-lock", NULL, MTX_DEF); in xen_arch_intr_init()
311 * \param type The type of interrupt source to create.
330 KASSERT(isrc->xi_arch.intsrc.is_pic == &xen_intr_pic, in xen_arch_intr_alloc()
333 KASSERT(isrc->xi_arch.intsrc.is_handlers == 0, in xen_arch_intr_alloc()
356 isrc->xi_arch.intsrc.is_pic = &xen_intr_pic; in xen_arch_intr_alloc()
357 isrc->xi_arch.vector = vector; in xen_arch_intr_alloc()
358 error = intr_register_source(&isrc->xi_arch.intsrc); in xen_arch_intr_alloc()
370 KASSERT(isrc->xi_arch.intsrc.is_handlers == 0, in xen_arch_intr_release()
374 "unused structure MUST be no larger than in-use structure"); in xen_arch_intr_release()
377 "unused structure does not properly overlay in-use structure"); in xen_arch_intr_release()