#ifndef __KVM_IO_APIC_H
#define __KVM_IO_APIC_H
#include <linux/kvm_host.h>
#include <kvm/iodev.h>
#include "irq.h"
struct kvm;
struct kvm_vcpu;
#define IOAPIC_NUM_PINS …
#define MAX_NR_RESERVED_IOAPIC_PINS …
#define IOAPIC_VERSION_ID …
#define IOAPIC_EDGE_TRIG …
#define IOAPIC_LEVEL_TRIG …
#define IOAPIC_DEFAULT_BASE_ADDRESS …
#define IOAPIC_MEM_LENGTH …
#define IOAPIC_REG_SELECT …
#define IOAPIC_REG_WINDOW …
#define IOAPIC_REG_APIC_ID …
#define IOAPIC_REG_VERSION …
#define IOAPIC_REG_ARB_ID …
#define IOAPIC_FIXED …
#define IOAPIC_LOWEST_PRIORITY …
#define IOAPIC_PMI …
#define IOAPIC_NMI …
#define IOAPIC_INIT …
#define IOAPIC_EXTINT …
#define RTC_GSI …
struct dest_map { … };
struct rtc_status { … };
kvm_ioapic_redirect_entry;
struct kvm_ioapic { … };
#ifdef DEBUG
#define ASSERT …
#else
#define ASSERT(x) …
#endif
static inline int ioapic_in_kernel(struct kvm *kvm)
{ … }
void kvm_rtc_eoi_tracking_restore_one(struct kvm_vcpu *vcpu);
void kvm_ioapic_update_eoi(struct kvm_vcpu *vcpu, int vector,
int trigger_mode);
int kvm_ioapic_init(struct kvm *kvm);
void kvm_ioapic_destroy(struct kvm *kvm);
int kvm_ioapic_set_irq(struct kvm_ioapic *ioapic, int irq, int irq_source_id,
int level, bool line_status);
void kvm_ioapic_clear_all(struct kvm_ioapic *ioapic, int irq_source_id);
void kvm_get_ioapic(struct kvm *kvm, struct kvm_ioapic_state *state);
void kvm_set_ioapic(struct kvm *kvm, struct kvm_ioapic_state *state);
void kvm_ioapic_scan_entry(struct kvm_vcpu *vcpu,
ulong *ioapic_handled_vectors);
void kvm_scan_ioapic_routes(struct kvm_vcpu *vcpu,
ulong *ioapic_handled_vectors);
#endif