The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/xen/evtchn.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /******************************************************************************
    2  * evtchn.h
    3  * 
    4  * Communication via Xen event channels.
    5  * Also definitions for the device that demuxes notifications to userspace.
    6  * 
    7  * Copyright (c) 2004, K A Fraser
    8  *
    9  * $FreeBSD$
   10  */
   11 
   12 #ifndef __ASM_EVTCHN_H__
   13 #define __ASM_EVTCHN_H__
   14 #include <machine/pcpu.h>
   15 #include <xen/hypervisor.h>
   16 #include <machine/xen/synch_bitops.h>
   17 #include <machine/frame.h>
   18 
   19 /*
   20  * LOW-LEVEL DEFINITIONS
   21  */
   22 
   23 /*
   24  * Unlike notify_remote_via_evtchn(), this is safe to use across
   25  * save/restore. Notifications on a broken connection are silently dropped.
   26  */
   27 void notify_remote_via_irq(int irq);
   28 
   29 
   30 /* Entry point for notifications into Linux subsystems. */
   31 void evtchn_do_upcall(struct trapframe *frame);
   32 
   33 /* Entry point for notifications into the userland character device. */
   34 void evtchn_device_upcall(int port);
   35 
   36 void mask_evtchn(int port);
   37 
   38 void unmask_evtchn(int port);
   39 
   40 #ifdef SMP
   41 void rebind_evtchn_to_cpu(int port, unsigned int cpu);
   42 #else
   43 #define rebind_evtchn_to_cpu(port, cpu) ((void)0)
   44 #endif
   45 
   46 static inline
   47 int test_and_set_evtchn_mask(int port)
   48 {
   49         shared_info_t *s = HYPERVISOR_shared_info;
   50         return synch_test_and_set_bit(port, s->evtchn_mask);
   51 }
   52 
   53 static inline void 
   54 clear_evtchn(int port)
   55 {
   56         shared_info_t *s = HYPERVISOR_shared_info;
   57         synch_clear_bit(port, &s->evtchn_pending[0]);
   58 }
   59 
   60 static inline void 
   61 notify_remote_via_evtchn(int port)
   62 {
   63         struct evtchn_send send = { .port = port };
   64         (void)HYPERVISOR_event_channel_op(EVTCHNOP_send, &send);
   65 }
   66 
   67 /*
   68  * Use these to access the event channel underlying the IRQ handle returned
   69  * by bind_*_to_irqhandler().
   70  */
   71 int irq_to_evtchn_port(int irq);
   72 
   73 void ipi_pcpu(unsigned int cpu, int vector);
   74 
   75 /*
   76  * CHARACTER-DEVICE DEFINITIONS
   77  */
   78 
   79 #define PORT_NORMAL    0x0000
   80 #define PORT_EXCEPTION 0x8000
   81 #define PORTIDX_MASK   0x7fff
   82 
   83 /* /dev/xen/evtchn resides at device number major=10, minor=200 */
   84 #define EVTCHN_MINOR 200
   85 
   86 /* /dev/xen/evtchn ioctls: */
   87 /* EVTCHN_RESET: Clear and reinit the event buffer. Clear error condition. */
   88 #define EVTCHN_RESET  _IO('E', 1)
   89 /* EVTCHN_BIND: Bind to the specified event-channel port. */
   90 #define EVTCHN_BIND   _IO('E', 2)
   91 /* EVTCHN_UNBIND: Unbind from the specified event-channel port. */
   92 #define EVTCHN_UNBIND _IO('E', 3)
   93 
   94 #endif /* __ASM_EVTCHN_H__ */

Cache object: 0e80a42a8f4228b2efa62b001749f4fe


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.