Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


6b1fabb74621c61d2387fdaea9966cb79a4a5e78
[palacios.git] / palacios / include / devices / icc_bus.h
1 /*
2  * This file is part of the Palacios Virtual Machine Monitor developed
3  * by the V3VEE Project with funding from the United States National
4  * Science Foundation and the Department of Energy.
5  *
6  * The V3VEE Project is a joint project between Northwestern University
7  * and the University of New Mexico.  You can find out more at
8  * http://www.v3vee.org
9  *
10  * Copyright (c) 2008, Jack Lange <jarusl@cs.northwestern.edu>
11  * Copyright (c) 2008, The V3VEE Project <http://www.v3vee.org>
12  * All rights reserved.
13  *
14  * Author: Jack Lange <jarusl@cs.northwestern.edu>
15  *
16  * This is free software.  You are permitted to use,
17  * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
18  */
19
20 #ifndef ICC_BUS_H_
21 #define ICC_BUS_H_
22
23
24 struct v3_icc_ops {
25     int (*raise_intr)(struct guest_info * core, int intr_num, void * private_data);
26 };
27
28
29 /**
30  *
31  */
32 int v3_icc_register_apic(struct guest_info *core, struct vm_device * icc_bus, uint8_t apic_phys_id, struct v3_icc_ops * ops, void * priv_data);
33 int v3_icc_register_ioapic(struct v3_vm_info *vm, struct vm_device * icc_bus, uint8_t apic_phys_id);
34
35 /**
36  * Send an inter-processor interrupt (IPI) from one local APIC to another local APIC.
37  *
38  * @param icc_bus  - The ICC bus that routes IPIs.
39  * @param apic_src - The source APIC id.
40  * @param apic_num - The remote APIC number.
41  * @param icr      - A copy of the APIC's ICR.  (LAPIC-style ICR, clone from redir table for ioapics)
42  */
43 int v3_icc_send_ipi(struct vm_device * icc_bus, uint32_t apic_src, uint64_t icr);
44
45
46 #if 0
47 /**
48  * Send an IRQinter-processor interrupt (IPI) from one local APIC to another local APIC.
49  *
50  * @param icc_bus  - The ICC bus that routes IPIs.
51  * @param apic_src - The source APIC id.
52  * @param apic_num - The remote APIC number.
53  * @param icrlo    - The low 32 bites of the APIC's ICR.
54  */
55 int v3_icc_send_irq(struct vm_device * icc_bus, uint32_t ioapic_src, uint8_t apic_num, uint8_t irq);
56
57 #endif
58
59
60 #endif /* ICC_BUS_H_ */