aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/public/xen.h
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-12-11 08:44:33 +0000
committerKeir Fraser <keir.fraser@citrix.com>2009-12-11 08:44:33 +0000
commitb1fc842a272f865e86a78f104b9ed59b29952f46 (patch)
tree7c59d5e484b1e827f70cfb6ce6dc34a71e916ab9 /xen/include/public/xen.h
parentef9550e2e2f3d682155f9c236c94c254f3369686 (diff)
downloadxen-b1fc842a272f865e86a78f104b9ed59b29952f46.tar.gz
xen-b1fc842a272f865e86a78f104b9ed59b29952f46.tar.bz2
xen-b1fc842a272f865e86a78f104b9ed59b29952f46.zip
domain builder: multiboot-like module support
This defines how multiple modules can be passed to a domain by packing them together into a "multiboot module" in a way very similar to the multiboot standard. An SIF_ flag is added to announce such package. This also adds a packing implementation to PV-GRUB. Signed-Off-By: Samuel Thibault <samuel.thibault@ens-lyon.org>
Diffstat (limited to 'xen/include/public/xen.h')
-rw-r--r--xen/include/public/xen.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h
index 50692a03a4..d46b1dd37e 100644
--- a/xen/include/public/xen.h
+++ b/xen/include/public/xen.h
@@ -584,8 +584,35 @@ typedef struct start_info start_info_t;
/* These flags are passed in the 'flags' field of start_info_t. */
#define SIF_PRIVILEGED (1<<0) /* Is the domain privileged? */
#define SIF_INITDOMAIN (1<<1) /* Is this the initial control domain? */
+#define SIF_MULTIBOOT_MOD (1<<2) /* Is mod_start a multiboot module? */
#define SIF_PM_MASK (0xFF<<8) /* reserve 1 byte for xen-pm options */
+/*
+ * A multiboot module is a package containing modules very similar to a
+ * multiboot module array. The only differences are:
+ * - the array of module descriptors is by convention simply at the beginning
+ * of the multiboot module,
+ * - addresses in the module descriptors are based on the beginning of the
+ * multiboot module,
+ * - the number of modules is determined by a termination descriptor that has
+ * mod_start == 0.
+ *
+ * This permits to both build it statically and reference it in a configuration
+ * file, and let the PV guest easily rebase the addresses to virtual addresses
+ * and at the same time count the number of modules.
+ */
+struct xen_multiboot_mod_list
+{
+ /* Address of first byte of the module */
+ uint32_t mod_start;
+ /* Address of last byte of the module (inclusive) */
+ uint32_t mod_end;
+ /* Address of zero-terminated command line */
+ uint32_t cmdline;
+ /* Unused, must be zero */
+ uint32_t pad;
+};
+
typedef struct dom0_vga_console_info {
uint8_t video_type; /* DOM0_VGA_CONSOLE_??? */
#define XEN_VGATYPE_TEXT_MODE_3 0x03