diff options
author | jhb <jhb@FreeBSD.org> | 2014-07-19 22:06:46 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2014-07-19 22:06:46 +0000 |
commit | 3da9c304ee7b72e7136f1708976a950b3b0a9d41 (patch) | |
tree | 50c938e6aaf17b42cd20cf1cf4b8e2204a814064 /lib/libvmmapi/vmmapi.c | |
parent | ba55949ac368dc3605b73d26161b12730d968366 (diff) | |
download | FreeBSD-src-3da9c304ee7b72e7136f1708976a950b3b0a9d41.zip FreeBSD-src-3da9c304ee7b72e7136f1708976a950b3b0a9d41.tar.gz |
MFC 259942,262274,263035,263054,263211,263744,264179,264324,264468,264631,
264648,264650,264651,266572,267558:
Flesh out the AT PIC and 8254 PIT emulations and move them into the kernel.
Diffstat (limited to 'lib/libvmmapi/vmmapi.c')
-rw-r--r-- | lib/libvmmapi/vmmapi.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/libvmmapi/vmmapi.c b/lib/libvmmapi/vmmapi.c index 7198c99..22b536a 100644 --- a/lib/libvmmapi/vmmapi.c +++ b/lib/libvmmapi/vmmapi.c @@ -458,6 +458,41 @@ vm_ioapic_pincount(struct vmctx *ctx, int *pincount) } int +vm_isa_assert_irq(struct vmctx *ctx, int atpic_irq, int ioapic_irq) +{ + struct vm_isa_irq isa_irq; + + bzero(&isa_irq, sizeof(struct vm_isa_irq)); + isa_irq.atpic_irq = atpic_irq; + isa_irq.ioapic_irq = ioapic_irq; + + return (ioctl(ctx->fd, VM_ISA_ASSERT_IRQ, &isa_irq)); +} + +int +vm_isa_deassert_irq(struct vmctx *ctx, int atpic_irq, int ioapic_irq) +{ + struct vm_isa_irq isa_irq; + + bzero(&isa_irq, sizeof(struct vm_isa_irq)); + isa_irq.atpic_irq = atpic_irq; + isa_irq.ioapic_irq = ioapic_irq; + + return (ioctl(ctx->fd, VM_ISA_DEASSERT_IRQ, &isa_irq)); +} + +int +vm_isa_pulse_irq(struct vmctx *ctx, int atpic_irq, int ioapic_irq) +{ + struct vm_isa_irq isa_irq; + bzero(&isa_irq, sizeof(struct vm_isa_irq)); + isa_irq.atpic_irq = atpic_irq; + isa_irq.ioapic_irq = ioapic_irq; + + return (ioctl(ctx->fd, VM_ISA_PULSE_IRQ, &isa_irq)); +} + +int vm_inject_nmi(struct vmctx *ctx, int vcpu) { struct vm_nmi vmnmi; |