Files
linux-apfs/include/linux/lguest_launcher.h
T

45 lines
1.5 KiB
C
Raw Normal View History

2007-10-25 14:12:20 +10:00
#ifndef _LINUX_LGUEST_LAUNCHER
#define _LINUX_LGUEST_LAUNCHER
2007-07-19 01:49:23 -07:00
/* Everything the "lguest" userspace program needs to know. */
#include <linux/types.h>
2007-07-19 01:49:23 -07:00
2007-07-26 10:41:03 -07:00
/*D:010
* Drivers
*
* The Guest needs devices to do anything useful. Since we don't let it touch
* real devices (think of the damage it could do!) we provide virtual devices.
* We emulate a PCI bus with virtio devices on it; we used to have our own
* lguest bus which was far simpler, but this tests the virtio 1.0 standard.
2007-07-26 10:41:03 -07:00
*
2008-03-28 11:05:53 -05:00
* Virtio devices are also used by kvm, so we can simply reuse their optimized
* device drivers. And one day when everyone uses virtio, my plan will be
* complete. Bwahahahah!
2007-07-26 10:41:03 -07:00
*/
2007-07-19 01:49:23 -07:00
/* Write command first word is a request. */
enum lguest_req
{
LHREQ_INITIALIZE, /* + base, pfnlimit, start */
2007-10-22 11:24:10 +10:00
LHREQ_GETDMA, /* No longer used */
2007-07-19 01:49:23 -07:00
LHREQ_IRQ, /* + irq */
2009-06-12 22:27:10 -06:00
LHREQ_BREAK, /* No longer used */
LHREQ_EVENTFD, /* No longer used. */
LHREQ_GETREG, /* + offset within struct pt_regs (then read value). */
LHREQ_SETREG, /* + offset within struct pt_regs, value. */
LHREQ_TRAP, /* + trap number to deliver to guest. */
2007-07-19 01:49:23 -07:00
};
/*
* This is what read() of the lguest fd populates. trap ==
* LGUEST_TRAP_ENTRY for an LHCALL_NOTIFY (addr is the
* argument), 14 for a page fault in the MMIO region (addr is
* the trap address, insn is the instruction), or 13 for a GPF
* (insn is the instruction).
*/
struct lguest_pending {
__u8 trap;
__u8 insn[7];
__u32 addr;
};
2007-10-25 14:12:20 +10:00
#endif /* _LINUX_LGUEST_LAUNCHER */