The start info structure is declared as the following (in xen/include/public/xen.h):
#define MAX_GUEST_CMDLINE 1024
typedef struct start_info {
/* THE FOLLOWING ARE FILLED IN BOTH ON INITIAL BOOT AND ON RESUME. */
char magic[32]; /* "Xen-<version>.<subversion>". */
unsigned long nr_pages; /* Total pages allocated to this domain. */
unsigned long shared_info; /* MACHINE address of shared info struct. */
uint32_t flags; /* SIF_xxx flags. */
unsigned long store_mfn; /* MACHINE page number of shared page. */
uint32_t store_evtchn; /* Event channel for store communication. */
unsigned long console_mfn; /* MACHINE address of console page. */
uint32_t console_evtchn; /* Event channel for console messages. */
/* THE FOLLOWING ARE ONLY FILLED IN ON INITIAL BOOT (NOT RESUME). */
unsigned long pt_base; /* VIRTUAL address of page directory. */
unsigned long nr_pt_frames; /* Number of bootstrap p.t. frames. */
unsigned long mfn_list; /* VIRTUAL address of page-frame list. */
unsigned long mod_start; /* VIRTUAL address of pre-loaded module. */
unsigned long mod_len; /* Size (bytes) of pre-loaded module. */
int8_t cmd_line[MAX_GUEST_CMDLINE];
} start_info_t;
The fields are in two groups: the first group are always filled in
when a domain is booted or resumed, the second set are only used at
boot time.
The always-available group is as follows:
- magic
- A text string identifying the Xen version to the guest.
- nr_pages
- The number of real machine pages available to the
guest.
- shared_info
- Machine address of the shared info structure,
allowing the guest to map it during initialisation.
- flags
- Flags for describing optional extra settings to the
guest.
- store_mfn
- Machine address of the Xenstore communications page.
- store_evtchn
- Event channel to communicate with the store.
- console_mfn
- Machine address of the console data page.
- console_evtchn
- Event channel to notify the console backend.
The boot-only group may only be safely referred to during system boot:
- pt_base
- Virtual address of the page directory created for us
by the domain builder.
- nr_pt_frames
- Number of frames used by the builders' bootstrap
pagetables.
- mfn_list
- Virtual address of the list of machine frames this
domain owns.
- mod_start
- Virtual address of any pre-loaded modules
(e.g. ramdisk)
- mod_len
- Size of pre-loaded module (if any).
- cmd_line
- Kernel command line passed by the domain builder.