lguest.h

来自「linux 内核源代码」· C头文件 代码 · 共 61 行

H
61
字号
/* Things the lguest guest needs to know.  Note: like all lguest interfaces, * this is subject to wild and random change between versions. */#ifndef _LINUX_LGUEST_H#define _LINUX_LGUEST_H#ifndef __ASSEMBLY__#include <linux/time.h>#include <asm/irq.h>#include <asm/lguest_hcall.h>#define LG_CLOCK_MIN_DELTA	100UL#define LG_CLOCK_MAX_DELTA	ULONG_MAX/*G:032 The second method of communicating with the Host is to via "struct * lguest_data".  Once the Guest's initialization hypercall tells the Host where * this is, the Guest and Host both publish information in it. :*/struct lguest_data{	/* 512 == enabled (same as eflags in normal hardware).  The Guest	 * changes interrupts so often that a hypercall is too slow. */	unsigned int irq_enabled;	/* Fine-grained interrupt disabling by the Guest */	DECLARE_BITMAP(blocked_interrupts, LGUEST_IRQS);	/* The Host writes the virtual address of the last page fault here,	 * which saves the Guest a hypercall.  CR2 is the native register where	 * this address would normally be found. */	unsigned long cr2;	/* Wallclock time set by the Host. */	struct timespec time;	/* Async hypercall ring.  Instead of directly making hypercalls, we can	 * place them in here for processing the next time the Host wants.	 * This batching can be quite efficient. */	/* 0xFF == done (set by Host), 0 == pending (set by Guest). */	u8 hcall_status[LHCALL_RING_SIZE];	/* The actual registers for the hypercalls. */	struct hcall_args hcalls[LHCALL_RING_SIZE];/* Fields initialized by the Host at boot: */	/* Memory not to try to access */	unsigned long reserve_mem;	/* KHz for the TSC clock. */	u32 tsc_khz;	/* Page where the top-level pagetable is */	unsigned long pgdir;/* Fields initialized by the Guest at boot: */	/* Instruction range to suppress interrupts even if enabled */	unsigned long noirq_start, noirq_end;	/* Address above which page tables are all identical. */	unsigned long kernel_address;	/* The vector to try to use for system calls (0x40 or 0x80). */	unsigned int syscall_vec;};extern struct lguest_data lguest_data;#endif /* __ASSEMBLY__ */#endif	/* _LINUX_LGUEST_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?