diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-12-11 08:44:33 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-12-11 08:44:33 +0000 |
commit | b1fc842a272f865e86a78f104b9ed59b29952f46 (patch) | |
tree | 7c59d5e484b1e827f70cfb6ce6dc34a71e916ab9 /xen/include/public/xen.h | |
parent | ef9550e2e2f3d682155f9c236c94c254f3369686 (diff) | |
download | xen-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.h | 27 |
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 |