Loading drivers/kvm/iodev.h 0 → 100644 +63 −0 Original line number Diff line number Diff line /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __KVM_IODEV_H__ #define __KVM_IODEV_H__ #include "types.h" struct kvm_io_device { void (*read)(struct kvm_io_device *this, gpa_t addr, int len, void *val); void (*write)(struct kvm_io_device *this, gpa_t addr, int len, const void *val); int (*in_range)(struct kvm_io_device *this, gpa_t addr); void (*destructor)(struct kvm_io_device *this); void *private; }; static inline void kvm_iodevice_read(struct kvm_io_device *dev, gpa_t addr, int len, void *val) { dev->read(dev, addr, len, val); } static inline void kvm_iodevice_write(struct kvm_io_device *dev, gpa_t addr, int len, const void *val) { dev->write(dev, addr, len, val); } static inline int kvm_iodevice_inrange(struct kvm_io_device *dev, gpa_t addr) { return dev->in_range(dev, addr); } static inline void kvm_iodevice_destructor(struct kvm_io_device *dev) { if (dev->destructor) dev->destructor(dev); } #endif /* __KVM_IODEV_H__ */ drivers/kvm/irq.h +1 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #define __IRQ_H #include "kvm.h" #include "iodev.h" typedef void irq_request_func(void *opaque, int level); Loading drivers/kvm/kvm.h +0 −42 Original line number Diff line number Diff line Loading @@ -168,48 +168,6 @@ struct kvm_vcpu_stat { u32 insn_emulation_fail; }; struct kvm_io_device { void (*read)(struct kvm_io_device *this, gpa_t addr, int len, void *val); void (*write)(struct kvm_io_device *this, gpa_t addr, int len, const void *val); int (*in_range)(struct kvm_io_device *this, gpa_t addr); void (*destructor)(struct kvm_io_device *this); void *private; }; static inline void kvm_iodevice_read(struct kvm_io_device *dev, gpa_t addr, int len, void *val) { dev->read(dev, addr, len, val); } static inline void kvm_iodevice_write(struct kvm_io_device *dev, gpa_t addr, int len, const void *val) { dev->write(dev, addr, len, val); } static inline int kvm_iodevice_inrange(struct kvm_io_device *dev, gpa_t addr) { return dev->in_range(dev, addr); } static inline void kvm_iodevice_destructor(struct kvm_io_device *dev) { if (dev->destructor) dev->destructor(dev); } /* * It would be nice to use something smarter than a linear search, TBD... * Thankfully we dont expect many devices to register (famous last words :), Loading drivers/kvm/kvm_main.c +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include "kvm.h" #include "x86.h" #include "irq.h" #include "iodev.h" #include <linux/kvm.h> #include <linux/module.h> Loading Loading
drivers/kvm/iodev.h 0 → 100644 +63 −0 Original line number Diff line number Diff line /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __KVM_IODEV_H__ #define __KVM_IODEV_H__ #include "types.h" struct kvm_io_device { void (*read)(struct kvm_io_device *this, gpa_t addr, int len, void *val); void (*write)(struct kvm_io_device *this, gpa_t addr, int len, const void *val); int (*in_range)(struct kvm_io_device *this, gpa_t addr); void (*destructor)(struct kvm_io_device *this); void *private; }; static inline void kvm_iodevice_read(struct kvm_io_device *dev, gpa_t addr, int len, void *val) { dev->read(dev, addr, len, val); } static inline void kvm_iodevice_write(struct kvm_io_device *dev, gpa_t addr, int len, const void *val) { dev->write(dev, addr, len, val); } static inline int kvm_iodevice_inrange(struct kvm_io_device *dev, gpa_t addr) { return dev->in_range(dev, addr); } static inline void kvm_iodevice_destructor(struct kvm_io_device *dev) { if (dev->destructor) dev->destructor(dev); } #endif /* __KVM_IODEV_H__ */
drivers/kvm/irq.h +1 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #define __IRQ_H #include "kvm.h" #include "iodev.h" typedef void irq_request_func(void *opaque, int level); Loading
drivers/kvm/kvm.h +0 −42 Original line number Diff line number Diff line Loading @@ -168,48 +168,6 @@ struct kvm_vcpu_stat { u32 insn_emulation_fail; }; struct kvm_io_device { void (*read)(struct kvm_io_device *this, gpa_t addr, int len, void *val); void (*write)(struct kvm_io_device *this, gpa_t addr, int len, const void *val); int (*in_range)(struct kvm_io_device *this, gpa_t addr); void (*destructor)(struct kvm_io_device *this); void *private; }; static inline void kvm_iodevice_read(struct kvm_io_device *dev, gpa_t addr, int len, void *val) { dev->read(dev, addr, len, val); } static inline void kvm_iodevice_write(struct kvm_io_device *dev, gpa_t addr, int len, const void *val) { dev->write(dev, addr, len, val); } static inline int kvm_iodevice_inrange(struct kvm_io_device *dev, gpa_t addr) { return dev->in_range(dev, addr); } static inline void kvm_iodevice_destructor(struct kvm_io_device *dev) { if (dev->destructor) dev->destructor(dev); } /* * It would be nice to use something smarter than a linear search, TBD... * Thankfully we dont expect many devices to register (famous last words :), Loading
drivers/kvm/kvm_main.c +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include "kvm.h" #include "x86.h" #include "irq.h" #include "iodev.h" #include <linux/kvm.h> #include <linux/module.h> Loading