Lines Matching full:channel

842     XenEventChannel *channel = opaque;  in xen_device_poll()  local
844 return channel->handler(channel->opaque); in xen_device_poll()
849 XenEventChannel *channel = opaque; in xen_device_event() local
850 unsigned long port = qemu_xen_evtchn_pending(channel->xeh); in xen_device_event()
852 if (port == channel->local_port) { in xen_device_event()
853 xen_device_poll(channel); in xen_device_event()
855 qemu_xen_evtchn_unmask(channel->xeh, port); in xen_device_event()
860 XenEventChannel *channel, in xen_device_set_event_channel_context() argument
864 if (!channel) { in xen_device_set_event_channel_context()
865 error_setg(errp, "bad channel"); in xen_device_set_event_channel_context()
869 if (channel->ctx) in xen_device_set_event_channel_context()
870 aio_set_fd_handler(channel->ctx, qemu_xen_evtchn_fd(channel->xeh), in xen_device_set_event_channel_context()
873 channel->ctx = ctx; in xen_device_set_event_channel_context()
875 aio_set_fd_handler(channel->ctx, qemu_xen_evtchn_fd(channel->xeh), in xen_device_set_event_channel_context()
877 channel); in xen_device_set_event_channel_context()
886 XenEventChannel *channel = g_new0(XenEventChannel, 1); in xen_device_bind_event_channel() local
889 channel->xeh = qemu_xen_evtchn_open(); in xen_device_bind_event_channel()
890 if (!channel->xeh) { in xen_device_bind_event_channel()
895 local_port = qemu_xen_evtchn_bind_interdomain(channel->xeh, in xen_device_bind_event_channel()
903 channel->local_port = local_port; in xen_device_bind_event_channel()
904 channel->handler = handler; in xen_device_bind_event_channel()
905 channel->opaque = opaque; in xen_device_bind_event_channel()
907 /* Only reason for failure is a NULL channel */ in xen_device_bind_event_channel()
908 xen_device_set_event_channel_context(xendev, channel, in xen_device_bind_event_channel()
912 QLIST_INSERT_HEAD(&xendev->event_channels, channel, list); in xen_device_bind_event_channel()
914 return channel; in xen_device_bind_event_channel()
917 if (channel->xeh) { in xen_device_bind_event_channel()
918 qemu_xen_evtchn_close(channel->xeh); in xen_device_bind_event_channel()
921 g_free(channel); in xen_device_bind_event_channel()
927 XenEventChannel *channel, in xen_device_notify_event_channel() argument
930 if (!channel) { in xen_device_notify_event_channel()
931 error_setg(errp, "bad channel"); in xen_device_notify_event_channel()
935 if (qemu_xen_evtchn_notify(channel->xeh, channel->local_port) < 0) { in xen_device_notify_event_channel()
940 unsigned int xen_event_channel_get_local_port(XenEventChannel *channel) in xen_event_channel_get_local_port() argument
942 return channel->local_port; in xen_event_channel_get_local_port()
946 XenEventChannel *channel, in xen_device_unbind_event_channel() argument
949 if (!channel) { in xen_device_unbind_event_channel()
950 error_setg(errp, "bad channel"); in xen_device_unbind_event_channel()
954 QLIST_REMOVE(channel, list); in xen_device_unbind_event_channel()
956 if (channel->ctx) { in xen_device_unbind_event_channel()
957 aio_set_fd_handler(channel->ctx, qemu_xen_evtchn_fd(channel->xeh), in xen_device_unbind_event_channel()
961 if (qemu_xen_evtchn_unbind(channel->xeh, channel->local_port) < 0) { in xen_device_unbind_event_channel()
965 qemu_xen_evtchn_close(channel->xeh); in xen_device_unbind_event_channel()
966 g_free(channel); in xen_device_unbind_event_channel()
974 XenEventChannel *channel, *next; in xen_device_unrealize() local
992 QLIST_FOREACH_SAFE(channel, &xendev->event_channels, list, next) { in xen_device_unrealize()
993 xen_device_unbind_event_channel(xendev, channel, NULL); in xen_device_unrealize()