mirror of
https://github.com/xcat2/xNBA.git
synced 2024-12-14 15:21:32 +00:00
Place command-line inline, to save on memory allocation hassles.
This commit is contained in:
parent
f15482d85f
commit
9debfed07a
@ -119,8 +119,7 @@ multiboot_build_module_list ( struct image *image,
|
||||
module->mod_start = user_to_phys ( module_image->data, 0 );
|
||||
module->mod_end = user_to_phys ( module_image->data,
|
||||
module_image->len );
|
||||
if ( image->cmdline )
|
||||
module->string = virt_to_phys ( image->cmdline );
|
||||
module->string = virt_to_phys ( image->cmdline );
|
||||
|
||||
/* We promise to page-align modules, so at least check */
|
||||
assert ( ( module->mod_start & 0xfff ) == 0 );
|
||||
@ -154,11 +153,9 @@ static int multiboot_exec ( struct image *image ) {
|
||||
mbinfo.mmap_addr = virt_to_phys ( &mbmemmap[0].base_addr );
|
||||
mbinfo.flags |= ( MBI_FLAG_MEM | MBI_FLAG_MMAP );
|
||||
|
||||
/* Set command line, if present */
|
||||
if ( image->cmdline ) {
|
||||
mbinfo.cmdline = virt_to_phys ( image->cmdline );
|
||||
mbinfo.flags |= MBI_FLAG_CMDLINE;
|
||||
}
|
||||
/* Set command line */
|
||||
mbinfo.cmdline = virt_to_phys ( image->cmdline );
|
||||
mbinfo.flags |= MBI_FLAG_CMDLINE;
|
||||
|
||||
/* Construct module list */
|
||||
num_modules = multiboot_build_module_list ( image, NULL );
|
||||
|
@ -14,6 +14,9 @@
|
||||
|
||||
struct image_type;
|
||||
|
||||
/** Maximum length of a command line */
|
||||
#define CMDLINE_MAX 128
|
||||
|
||||
/** An executable or loadable image */
|
||||
struct image {
|
||||
/** Name */
|
||||
@ -22,12 +25,20 @@ struct image {
|
||||
struct list_head list;
|
||||
|
||||
/** Command line to pass to image */
|
||||
const char *cmdline;
|
||||
char cmdline[CMDLINE_MAX];
|
||||
|
||||
/** Raw file image */
|
||||
userptr_t data;
|
||||
/** Length of raw file image */
|
||||
size_t len;
|
||||
/**
|
||||
* Free raw file image
|
||||
*
|
||||
* @v data Raw file image
|
||||
*
|
||||
* Call this method before freeing up the @c struct @c image.
|
||||
*/
|
||||
void ( * free ) ( userptr_t data );
|
||||
|
||||
/** Entry point */
|
||||
physaddr_t entry;
|
||||
|
Loading…
Reference in New Issue
Block a user