Something went wrong. Try again.
Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __KVM_IODEV_H__#define __KVM_IODEV_H__
#include <linux/kvm_types.h>#include <linux/errno.h>
struct kvm_io_device;struct kvm_vcpu;
/** * kvm_io_device_ops are called under kvm slots_lock. * read and write handlers return 0 if the transaction has been handled, * or non-zero to have it passed to the next device. **/struct kvm_io_device_ops { int (*read)(struct kvm_vcpu *vcpu, struct kvm_io_device *this, gpa_t addr, int len, void *val); int (*write)(struct kvm_vcpu *vcpu, struct kvm_io_device *this, gpa_t addr, int len, const void *val); void (*destructor)(struct kvm_io_device *this);};
struct kvm_io_device { const struct kvm_io_device_ops *ops;};
static inline void kvm_iodevice_init(struct kvm_io_device *dev, const struct kvm_io_device_ops *ops){ dev->ops = ops;}
static inline int kvm_iodevice_read(struct kvm_vcpu *vcpu, struct kvm_io_device *dev, gpa_t addr, int l, void *v){ return dev->ops->read ? dev->ops->read(vcpu, dev, addr, l, v) : -EOPNOTSUPP;}
static inline int kvm_iodevice_write(struct kvm_vcpu *vcpu, struct kvm_io_device *dev, gpa_t addr, int l, const void *v){ return dev->ops->write ? dev->ops->write(vcpu, dev, addr, l, v) : -EOPNOTSUPP;}
#endif /* __KVM_IODEV_H__ */