\r
#define BOOT_DEVICE_DESCRIPTION_MAX 100\r
#define BOOT_DEVICE_FILEPATH_MAX 100\r
-#define BOOT_DEVICE_OPTION_MAX 100\r
+#define BOOT_DEVICE_OPTION_MAX 300\r
#define BOOT_DEVICE_ADDRESS_MAX 20\r
\r
typedef enum {\r
BDS_LOADER_KERNEL_LINUX_FDT,\r
} BDS_LOADER_TYPE;\r
\r
+typedef struct{\r
+ UINT16 InitrdPathListLength;\r
+ EFI_DEVICE_PATH_PROTOCOL *InitrdPathList;\r
+ CHAR8 CmdLine[BOOT_DEVICE_OPTION_MAX + 1];\r
+} BDS_LINUX_ATAG_ARGUMENTS;\r
+\r
+typedef union {\r
+ BDS_LINUX_ATAG_ARGUMENTS LinuxAtagArguments;\r
+} BDS_LOADER_ARGUMENTS;\r
+\r
typedef struct {\r
- BDS_LOADER_TYPE LoaderType;\r
- CHAR8 Arguments[];\r
+ BDS_LOADER_TYPE LoaderType;\r
+ BDS_LOADER_ARGUMENTS Arguments;\r
} BDS_LOADER_OPTIONAL_DATA;\r
\r
typedef enum {\r
\r
typedef UINT8* EFI_LOAD_OPTION;\r
\r
+/* This is defined by the UEFI specs, don't change it */\r
typedef struct {\r
LIST_ENTRY Link;\r
\r
BDS_SUPPORTED_DEVICE_TYPE Type;\r
EFI_STATUS (*ListDevices)(IN OUT LIST_ENTRY* BdsLoadOptionList);\r
BOOLEAN (*IsSupported)(IN BDS_LOAD_OPTION* BdsLoadOption);\r
- EFI_STATUS (*CreateDevicePathNode)(IN BDS_SUPPORTED_DEVICE* BdsLoadOption, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNode, OUT BDS_LOADER_TYPE *BootType, OUT UINT32 *Attributes);\r
- EFI_STATUS (*UpdateDevicePathNode)(IN BDS_LOAD_OPTION *BootOption, OUT EFI_DEVICE_PATH_PROTOCOL** NewDevicePath, OUT BDS_LOADER_TYPE *BootType, OUT UINT32 *Attributes);\r
+ EFI_STATUS (*CreateDevicePathNode)(IN BDS_SUPPORTED_DEVICE* BdsLoadOption, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNode, OUT BDS_LOADER_TYPE *BootType, OUT UINT32 *Attributes);\r
+ EFI_STATUS (*UpdateDevicePathNode)(IN EFI_DEVICE_PATH *OldDevicePath, OUT EFI_DEVICE_PATH_PROTOCOL** NewDevicePath, OUT BDS_LOADER_TYPE *BootType, OUT UINT32 *Attributes);\r
} BDS_LOAD_OPTION_SUPPORT;\r
\r
#define LOAD_OPTION_FROM_LINK(a) BASE_CR(a, BDS_LOAD_OPTION, Link)\r
\r
EFI_STATUS\r
BootDeviceListSupportedFree (\r
- IN LIST_ENTRY *SupportedDeviceList\r
+ IN LIST_ENTRY *SupportedDeviceList,\r
+ IN BDS_SUPPORTED_DEVICE *Except\r
);\r
\r
EFI_STATUS\r
IN CHAR16* BootDescription,\r
IN EFI_DEVICE_PATH_PROTOCOL* DevicePath,\r
IN BDS_LOADER_TYPE BootType,\r
- IN CHAR8* BootArguments,\r
+ IN BDS_LOADER_ARGUMENTS *BootArguments,\r
OUT BDS_LOAD_OPTION **BdsLoadOption\r
);\r
\r
IN CHAR16* BootDescription,\r
IN EFI_DEVICE_PATH_PROTOCOL* DevicePath,\r
IN BDS_LOADER_TYPE BootType,\r
- IN CHAR8* BootArguments\r
+ IN BDS_LOADER_ARGUMENTS *BootArguments\r
);\r
\r
EFI_STATUS\r