Imported Upstream version 3.14
[debian/elilo] / elilo.h
diff --git a/elilo.h b/elilo.h
index 9d2861796dcfd0a0d9f183a6a0c2bc267aee4804..bd0cd0b69bbdda709f77eea887a1f28d3c157960 100644 (file)
--- a/elilo.h
+++ b/elilo.h
 #ifndef __ELILO_H__
 #define __ELILO_H__
 
+#define ELILO_VERSION L"3.14"
+
 #include <efi.h>
 
+#ifdef CONFIG_ia32
+#define PTR_FMT L"0x%x"
+#else
+#define PTR_FMT L"0x%lx"
+#endif
+
 #include "elilo_debug.h"
 
 #include "fileops.h"
 #define ROUNDUP(x,a)   (((x) + (a) - 1) & ~((a) - 1))
 #define ROUNDDOWN(x,a)  ((x) & ~((a) - 1))
 
+#ifndef UINT32_MAX
+#define UINT32_MAX     ((UINT32)-1)
+#endif
+
 /*
  * Elilo Boot modes
  */
 #define ELILO_DEFAULT_TIMEOUT  ELILO_TIMEOUT_INFINITY
 #define ELILO_TIMEOUT_INFINITY (~0UL)
 
-#define CMDLINE_MAXLEN         512 /* needed by ia32 */
+#define CMDLINE_MAXLEN         2048
+#define PATHNAME_MAXLEN                512
 #define FILENAME_MAXLEN                256
 #define MAX_ARGS               256
+/* Just pick an arbitrary number that's high enough for now :o) */
+#define MAX_DEFAULT_CONFIGS     16
 
 typedef struct {
        UINT8 nothing_yet;
 } image_opt_t;
 
+typedef struct config_file {
+       CHAR16 fname[FILENAME_MAXLEN];
+} config_file_t;
+
 typedef struct {
        /*
         * list of options controllable from both the command line
@@ -75,6 +94,7 @@ typedef struct {
        UINTN delay;            /* delay before booting the image */
        UINTN verbose;          /* verbosity level [1-5] */
        CHAR16 initrd[FILENAME_MAXLEN];         /* name of file for initial ramdisk */
+       CHAR16 vmcode[FILENAME_MAXLEN]; /* name of file for boot time module*/
        UINT8 delay_set;        /* mark whether or not delay was specified on cmdline */
        UINT8 edd30_on;         /* true is EDD30 variable is TRUE */
        UINT8 edd30_no_force;   /* don't force EDD30 variable to true */
@@ -91,7 +111,8 @@ typedef struct {
        sys_img_options_t *sys_img_opts;        /* architecture depdendent per image options */
 
        CHAR16 default_kernel[FILENAME_MAXLEN];
-       CHAR16 default_config[FILENAME_MAXLEN];
+       /* CHAR16 default_config[FILENAME_MAXLEN]; */
+        config_file_t default_configs[MAX_DEFAULT_CONFIGS];
 
        CHAR16 config[FILENAME_MAXLEN];         /* name of config file */
        CHAR16 chooser[FILENAME_MAXLEN];        /* image chooser to use */
@@ -105,6 +126,7 @@ extern EFI_SYSTEM_TABLE *systab;
 typedef struct {
        VOID    *start_addr;
        UINTN   pgcnt;
+       UINTN   size;
 } memdesc_t;
 
 typedef struct {
@@ -141,6 +163,7 @@ extern VOID *alloc_pages(UINTN, EFI_MEMORY_TYPE, EFI_ALLOCATE_TYPE, VOID *);
 extern VOID free_pages(VOID *);
 extern VOID free_all(VOID);
 extern INTN alloc_kmem(VOID *, UINTN);
+extern INTN alloc_kmem_anywhere(VOID **, UINTN);
 extern VOID free_kmem(VOID);
 extern VOID free_all_memory(VOID);
 
@@ -160,9 +183,9 @@ extern VOID ascii2U(CHAR8 *, CHAR16 *, UINTN);
 extern VOID U2ascii(CHAR16 *, CHAR8 *, UINTN);
 
 /* from config.c (more in config.h) */
-extern EFI_STATUS read_config(CHAR16 *, INTN retry);
+extern EFI_STATUS read_config(CHAR16 *);
 extern VOID print_config_options(VOID);
-extern INTN find_label(CHAR16 *, CHAR16 *, CHAR16 *, CHAR16 *);
+extern INTN find_label(CHAR16 *, CHAR16 *, CHAR16 *, CHAR16 *, CHAR16 *);
 extern VOID print_label_list(VOID);
 extern INTN config_init(VOID);
 extern CHAR16 *get_message_filename(INTN which);
@@ -171,13 +194,13 @@ extern VOID *get_next_description(VOID *prev, CHAR16 **label, CHAR16 **descripti
 extern CHAR16 *get_config_file(VOID);
 
 /* from initrd.c */
-extern INTN load_initrd(CHAR16 *, memdesc_t *);
+extern INTN load_file(CHAR16 *, memdesc_t *);
 
 /* from alternate.c */
-extern INTN alternate_kernel(CHAR16 *, INTN);
+extern INTN alternate_kernel(CHAR16 *, UINTN);
 
 /* from bootparams.c */
-extern VOID *create_boot_params (CHAR16 *, memdesc_t *, UINTN *);
+extern VOID *create_boot_params (CHAR16 *, memdesc_t *, memdesc_t *, UINTN *);
 extern VOID free_boot_params(VOID *bp);
 
 /*
@@ -185,7 +208,7 @@ extern VOID free_boot_params(VOID *bp);
  */
 
 
-extern INTN sysdeps_create_boot_params(boot_params_t *, CHAR8 *, memdesc_t *, UINTN *);
+extern INTN sysdeps_create_boot_params(boot_params_t *, CHAR8 *, memdesc_t *, memdesc_t *, UINTN *);
 extern VOID sysdeps_free_boot_params(boot_params_t *);
 extern INTN sysdeps_init(EFI_HANDLE dev);
 extern INTN sysdeps_initrd_get_addr(kdesc_t *, memdesc_t *);
@@ -194,6 +217,7 @@ extern CHAR16 *sysdeps_get_cmdline_opts(VOID);
 extern INTN sysdeps_getopt(INTN, INTN, CHAR16 *);
 extern VOID sysdeps_print_cmdline_opts(VOID);
 extern INTN sysdeps_register_options(VOID);
+extern VOID *sysdeps_checkfix_initrd(VOID *, memdesc_t *);
 
 #define        CHAR_SLASH      L'/'
 #define CHAR_BACKSLASH L'\\'