<dec f='src/src/sys/arch/xen/include/xen-public/xen.h' l='523' type='unsigned long [64]'/>
<offset>16384</offset>
<doc f='src/src/sys/arch/xen/include/xen-public/xen.h' l='492'>/*
     * A domain can create &quot;event channels&quot; on which it can send and receive
     * asynchronous event notifications. There are three classes of event that
     * are delivered by this mechanism:
     *  1. Bi-directional inter- and intra-domain connections. Domains must
     *     arrange out-of-band to set up a connection (usually by allocating
     *     an unbound &apos;listener&apos; port and avertising that via a storage service
     *     such as xenstore).
     *  2. Physical interrupts. A domain with suitable hardware-access
     *     privileges can bind an event-channel port to a physical interrupt
     *     source.
     *  3. Virtual interrupts (&apos;events&apos;). A domain can bind an event-channel
     *     port to a virtual interrupt source, such as the virtual-timer
     *     device or the emergency console.
     * 
     * Event channels are addressed by a &quot;port index&quot;. Each channel is
     * associated with two bits of information:
     *  1. PENDING -- notifies the domain that there is a pending notification
     *     to be processed. This bit is cleared by the guest.
     *  2. MASK -- if this bit is clear then a 0-&gt;1 transition of PENDING
     *     will cause an asynchronous upcall to be scheduled. This bit is only
     *     updated by the guest. It is read-only within Xen. If a channel
     *     becomes pending while the channel is masked then the &apos;edge&apos; is lost
     *     (i.e., when the channel is unmasked, the guest must manually handle
     *     pending notifications as no upcall will be scheduled by Xen).
     * 
     * To expedite scanning of pending notifications, any 0-&gt;1 pending
     * transition on an unmasked channel causes a corresponding bit in a
     * per-vcpu selector word to be set. Each bit in the selector covers a
     * &apos;C long&apos; in the PENDING bitfield array.
     */</doc>
<use f='src/src/sys/arch/xen/x86/hypervisor_machdep.c' l='195' u='r' c='stipending'/>
<use f='src/src/sys/arch/xen/x86/hypervisor_machdep.c' l='275' u='r' c='do_hypervisor_callback'/>
<use f='src/src/sys/arch/xen/x86/hypervisor_machdep.c' l='300' u='a' c='hypervisor_send_event'/>
<use f='src/src/sys/arch/xen/x86/hypervisor_machdep.c' l='339' u='a' c='hypervisor_unmask_event'/>
<use f='src/src/sys/arch/xen/x86/hypervisor_machdep.c' l='339' u='a' c='hypervisor_unmask_event'/>
<use f='src/src/sys/arch/xen/x86/hypervisor_machdep.c' l='387' u='a' c='hypervisor_clear_event'/>
<use f='src/src/sys/arch/xen/xen/evtchn.c' l='848' u='a' c='xen_debug_handler'/>
