Changeset View
Changeset View
Standalone View
Standalone View
sys/xen/xen_intr.c
Show First 20 Lines • Show All 317 Lines • ▼ Show 20 Lines | |||||
* \param isrc The interrupt source object to release. | * \param isrc The interrupt source object to release. | ||||
* | * | ||||
* \returns EBUSY if the source is still in use, otherwise 0. | * \returns EBUSY if the source is still in use, otherwise 0. | ||||
*/ | */ | ||||
static int | static int | ||||
xen_intr_release_isrc(struct xenisrc *isrc) | xen_intr_release_isrc(struct xenisrc *isrc) | ||||
{ | { | ||||
if (isrc->xi_cookie != NULL) | |||||
xen_arch_intr_remove_handler(isrc, isrc->xi_cookie); | |||||
KASSERT(!xen_arch_intr_has_handlers(isrc), | KASSERT(!xen_arch_intr_has_handlers(isrc), | ||||
("Release called, but xenisrc still in use")); | ("Release called, but xenisrc still in use")); | ||||
if (isrc->xi_port < NR_EVENT_CHANNELS) { | if (isrc->xi_port < NR_EVENT_CHANNELS) { | ||||
mtx_lock(&xen_intr_isrc_lock); | mtx_lock(&xen_intr_isrc_lock); | ||||
evtchn_mask_port(isrc->xi_port); | evtchn_mask_port(isrc->xi_port); | ||||
evtchn_clear_port(isrc->xi_port); | evtchn_clear_port(isrc->xi_port); | ||||
▲ Show 20 Lines • Show All 833 Lines • ▼ Show 20 Lines | xen_intr_unbind(xen_intr_handle_t *port_handlep) | ||||
mtx_lock(&xen_intr_isrc_lock); | mtx_lock(&xen_intr_isrc_lock); | ||||
if (refcount_release(&isrc->xi_refcount) == 0) { | if (refcount_release(&isrc->xi_refcount) == 0) { | ||||
mtx_unlock(&xen_intr_isrc_lock); | mtx_unlock(&xen_intr_isrc_lock); | ||||
return; | return; | ||||
} | } | ||||
mtx_unlock(&xen_intr_isrc_lock); | mtx_unlock(&xen_intr_isrc_lock); | ||||
if (isrc->xi_cookie != NULL) | |||||
xen_arch_intr_remove_handler(isrc, isrc->xi_cookie); | |||||
xen_intr_release_isrc(isrc); | xen_intr_release_isrc(isrc); | ||||
} | } | ||||
void | void | ||||
xen_intr_signal(xen_intr_handle_t handle) | xen_intr_signal(xen_intr_handle_t handle) | ||||
{ | { | ||||
struct xenisrc *isrc; | struct xenisrc *isrc; | ||||
▲ Show 20 Lines • Show All 131 Lines • Show Last 20 Lines |