diff options
Diffstat (limited to 'EdkUnixPkg/Include')
-rw-r--r-- | EdkUnixPkg/Include/Common/UnixInclude.h | 32 | ||||
-rw-r--r-- | EdkUnixPkg/Include/FlashLayout.h | 64 | ||||
-rw-r--r-- | EdkUnixPkg/Include/Library/EdkGenericBdsLib.h | 382 | ||||
-rw-r--r-- | EdkUnixPkg/Include/Library/UnixLib.h | 27 | ||||
-rw-r--r-- | EdkUnixPkg/Include/Ppi/UnixAutoScan.h | 66 | ||||
-rw-r--r-- | EdkUnixPkg/Include/Ppi/UnixFwh.h | 62 | ||||
-rw-r--r-- | EdkUnixPkg/Include/Ppi/UnixPeiLoadFile.h | 65 | ||||
-rw-r--r-- | EdkUnixPkg/Include/Ppi/UnixThunk.h | 56 | ||||
-rw-r--r-- | EdkUnixPkg/Include/Protocol/UnixIo.h | 132 | ||||
-rw-r--r-- | EdkUnixPkg/Include/Protocol/UnixThunk.h | 187 | ||||
-rw-r--r-- | EdkUnixPkg/Include/Protocol/UnixUgaIo.h | 72 | ||||
-rw-r--r-- | EdkUnixPkg/Include/UnixDxe.h | 36 | ||||
-rw-r--r-- | EdkUnixPkg/Include/UnixPeim.h | 30 |
13 files changed, 1211 insertions, 0 deletions
diff --git a/EdkUnixPkg/Include/Common/UnixInclude.h b/EdkUnixPkg/Include/Common/UnixInclude.h new file mode 100644 index 0000000000..922964672c --- /dev/null +++ b/EdkUnixPkg/Include/Common/UnixInclude.h @@ -0,0 +1,32 @@ +/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+ UnixInclude.h
+
+Abstract:
+ Public include file for the Unix Library
+
+--*/
+
+#ifndef __UNIX_INCLUDE_H__
+#define __UNIX_INCLUDE_H__
+#include <sys/types.h> +#include <sys/stat.h> +#include <sys/vfs.h> +#include <sys/poll.h> +#include <dirent.h> +#include <errno.h> +#include <fcntl.h> +#include <time.h> +#include <utime.h> +#include <unistd.h> +#endif
diff --git a/EdkUnixPkg/Include/FlashLayout.h b/EdkUnixPkg/Include/FlashLayout.h new file mode 100644 index 0000000000..1a13f16c50 --- /dev/null +++ b/EdkUnixPkg/Include/FlashLayout.h @@ -0,0 +1,64 @@ +/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ FlashLayout.h
+
+Abstract:
+
+ Platform specific flash layout
+
+ BugBug: We need a better way
+
+--*/
+
+#ifndef __EFI_FLASH_LAYOUT__
+#define __EFI_FLASH_LAYOUT__
+
+//
+// Firmware Volume Information for Nt32
+// adding one working block before FFS FV,
+// and another one for spare block behind FFS FV
+//
+//
+// Note: When block number is changed in .dsc file,
+// this value should be changed accordingly!!!
+//
+#define FIRMWARE_BLOCK_NUMBER 0x28
+
+#define EFI_WINNT_FIRMWARE_OFFSET 0x0
+#define EFI_WINNT_FIRMWARE_LENGTH (0x10000 * FIRMWARE_BLOCK_NUMBER)
+
+#define EFI_WINNT_RUNTIME_UPDATABLE_OFFSET (EFI_WINNT_FIRMWARE_OFFSET + EFI_WINNT_FIRMWARE_LENGTH)
+
+#define EFI_WINNT_RUNTIME_UPDATABLE_LENGTH 0x10000
+
+#define EFI_WINNT_FTW_SPARE_BLOCK_OFFSET (EFI_WINNT_RUNTIME_UPDATABLE_OFFSET + EFI_WINNT_RUNTIME_UPDATABLE_LENGTH)
+
+#define EFI_WINNT_FTW_SPARE_BLOCK_LENGTH 0x10000
+
+#define EFI_WINNT_RUNTIME_UPDATABLE_FV_HEADER_LENGTH 0x48
+
+#define EFI_VARIABLE_STORE_OFFSET EFI_WINNT_RUNTIME_UPDATABLE_OFFSET
+
+#define EFI_VARIABLE_STORE_LENGTH 0x00C000
+
+#define EFI_EVENT_LOG_OFFSET (EFI_VARIABLE_STORE_OFFSET + EFI_VARIABLE_STORE_LENGTH)
+
+#define EFI_EVENT_LOG_LENGTH 0x002000
+
+#define EFI_FTW_WORKING_OFFSET (EFI_EVENT_LOG_OFFSET + EFI_EVENT_LOG_LENGTH)
+
+#define EFI_FTW_WORKING_LENGTH 0x002000
+
+#endif
+
diff --git a/EdkUnixPkg/Include/Library/EdkGenericBdsLib.h b/EdkUnixPkg/Include/Library/EdkGenericBdsLib.h new file mode 100644 index 0000000000..9abda55891 --- /dev/null +++ b/EdkUnixPkg/Include/Library/EdkGenericBdsLib.h @@ -0,0 +1,382 @@ +/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ BdsLib.h
+
+Abstract:
+
+ BDS library definition, include the file and data structure
+
+--*/
+
+#ifndef _BDS_LIB_H_
+#define _BDS_LIB_H_
+
+extern EFI_HANDLE mBdsImageHandle;
+
+//
+// Constants which are variable names used to access variables
+//
+#define VarLegacyDevOrder L"LegacyDevOrder"
+
+//
+// Data structures and defines
+//
+#define FRONT_PAGE_QUESTION_ID 0x0000
+#define FRONT_PAGE_DATA_WIDTH 0x01
+
+//
+// ConnectType
+//
+#define CONSOLE_OUT 0x00000001
+#define STD_ERROR 0x00000002
+#define CONSOLE_IN 0x00000004
+#define CONSOLE_ALL (CONSOLE_OUT | CONSOLE_IN | STD_ERROR)
+
+//
+// Load Option Attributes defined in EFI Specification
+//
+#define LOAD_OPTION_ACTIVE 0x00000001
+#define LOAD_OPTION_FORCE_RECONNECT 0x00000002
+#define IS_LOAD_OPTION_TYPE(_c, _Mask) (BOOLEAN) (((_c) & (_Mask)) != 0)
+
+//
+// Define Maxmim characters that will be accepted
+//
+#define MAX_CHAR 480
+#define MAX_CHAR_SIZE (MAX_CHAR * 2)
+
+#define MIN_ALIGNMENT_SIZE 4
+#define ALIGN_SIZE(a) ((a % MIN_ALIGNMENT_SIZE) ? MIN_ALIGNMENT_SIZE - (a % MIN_ALIGNMENT_SIZE) : 0)
+
+//
+// Define maximum characters for boot option variable "BootXXXX"
+//
+#define BOOT_OPTION_MAX_CHAR 10
+
+//
+// This data structure is the part of BDS_CONNECT_ENTRY that we can hard code.
+//
+#define BDS_LOAD_OPTION_SIGNATURE EFI_SIGNATURE_32 ('B', 'd', 'C', 'O')
+
+typedef struct {
+
+ UINTN Signature;
+ LIST_ENTRY Link;
+
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+
+ CHAR16 *OptionName;
+ UINTN OptionNumber;
+ UINT16 BootCurrent;
+ UINT32 Attribute;
+ CHAR16 *Description;
+ VOID *LoadOptions;
+ UINT32 LoadOptionsSize;
+
+} BDS_COMMON_OPTION;
+
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ UINTN ConnectType;
+} BDS_CONSOLE_CONNECT_ENTRY;
+
+//
+// Lib Functions
+//
+
+//
+// Bds boot relate lib functions
+//
+EFI_STATUS
+BdsLibUpdateBootOrderList (
+ IN LIST_ENTRY *BdsOptionList,
+ IN CHAR16 *VariableName
+ );
+
+VOID
+BdsLibBootNext (
+ VOID
+ );
+
+EFI_STATUS
+BdsLibBootViaBootOption (
+ IN BDS_COMMON_OPTION * Option,
+ IN EFI_DEVICE_PATH_PROTOCOL * DevicePath,
+ OUT UINTN *ExitDataSize,
+ OUT CHAR16 **ExitData OPTIONAL
+ );
+
+EFI_STATUS
+BdsLibEnumerateAllBootOption (
+ IN OUT LIST_ENTRY *BdsBootOptionList
+ );
+
+VOID
+BdsLibBuildOptionFromHandle (
+ IN EFI_HANDLE Handle,
+ IN LIST_ENTRY *BdsBootOptionList
+ );
+
+VOID
+BdsLibBuildOptionFromShell (
+ IN EFI_HANDLE Handle,
+ IN LIST_ENTRY *BdsBootOptionList
+ );
+
+//
+// Bds misc lib functions
+//
+UINT16
+BdsLibGetTimeout (
+ VOID
+ );
+
+EFI_STATUS
+BdsLibGetBootMode (
+ OUT EFI_BOOT_MODE *BootMode
+ );
+
+VOID
+BdsLibLoadDrivers (
+ IN LIST_ENTRY *BdsDriverLists
+ );
+
+EFI_STATUS
+BdsLibBuildOptionFromVar (
+ IN LIST_ENTRY *BdsCommonOptionList,
+ IN CHAR16 *VariableName
+ );
+
+VOID *
+BdsLibGetVariableAndSize (
+ IN CHAR16 *Name,
+ IN EFI_GUID *VendorGuid,
+ OUT UINTN *VariableSize
+ );
+
+EFI_STATUS
+BdsLibOutputStrings (
+ IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *ConOut,
+ ...
+ );
+
+BDS_COMMON_OPTION *
+BdsLibVariableToOption (
+ IN OUT LIST_ENTRY *BdsCommonOptionList,
+ IN CHAR16 *VariableName
+ );
+
+EFI_STATUS
+BdsLibRegisterNewOption (
+ IN LIST_ENTRY *BdsOptionList,
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
+ IN CHAR16 *String,
+ IN CHAR16 *VariableName
+ );
+
+//
+// Bds connect or disconnect driver lib funcion
+//
+VOID
+BdsLibConnectAllDriversToAllControllers (
+ VOID
+ );
+
+VOID
+BdsLibConnectAll (
+ VOID
+ );
+
+EFI_STATUS
+BdsLibConnectDevicePath (
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePathToConnect
+ );
+
+EFI_STATUS
+BdsLibConnectAllEfi (
+ VOID
+ );
+
+EFI_STATUS
+BdsLibDisconnectAllEfi (
+ VOID
+ );
+
+//
+// Bds console relate lib functions
+//
+VOID
+BdsLibConnectAllConsoles (
+ VOID
+ );
+
+EFI_STATUS
+BdsLibConnectAllDefaultConsoles (
+ VOID
+ );
+
+EFI_STATUS
+BdsLibUpdateConsoleVariable (
+ IN CHAR16 *ConVarName,
+ IN EFI_DEVICE_PATH_PROTOCOL *CustomizedConDevicePath,
+ IN EFI_DEVICE_PATH_PROTOCOL *ExclusiveDevicePath
+ );
+
+EFI_STATUS
+BdsLibConnectConsoleVariable (
+ IN CHAR16 *ConVarName
+ );
+
+//
+// Bds device path relate lib functions
+//
+EFI_DEVICE_PATH_PROTOCOL *
+BdsLibUnpackDevicePath (
+ IN EFI_DEVICE_PATH_PROTOCOL *DevPath
+ );
+
+BOOLEAN
+BdsLibMatchDevicePaths (
+ IN EFI_DEVICE_PATH_PROTOCOL *Multi,
+ IN EFI_DEVICE_PATH_PROTOCOL *Single
+ );
+
+CHAR16 *
+DevicePathToStr (
+ EFI_DEVICE_PATH_PROTOCOL *DevPath
+ );
+
+VOID *
+EfiLibGetVariable (
+ IN CHAR16 *Name,
+ IN EFI_GUID *VendorGuid
+ );
+
+//
+// Internal definitions
+//
+typedef struct {
+ CHAR16 *str;
+ UINTN len;
+ UINTN maxlen;
+} POOL_PRINT;
+
+typedef struct {
+ UINT8 Type;
+ UINT8 SubType;
+ VOID (*Function) (POOL_PRINT *, VOID *);
+} DEVICE_PATH_STRING_TABLE;
+
+//
+// Internal functions
+//
+EFI_STATUS
+BdsBootByDiskSignatureAndPartition (
+ IN BDS_COMMON_OPTION * Option,
+ IN HARDDRIVE_DEVICE_PATH * HardDriveDevicePath,
+ IN UINT32 LoadOptionsSize,
+ IN VOID *LoadOptions,
+ OUT UINTN *ExitDataSize,
+ OUT CHAR16 **ExitData OPTIONAL
+ );
+
+//
+// Notes: EFI 64 shadow all option rom
+//
+#ifdef EFI64
+#define EFI64_SHADOW_ALL_LEGACY_ROM() ShadowAllOptionRom ();
+VOID
+ShadowAllOptionRom();
+#else
+#define EFI64_SHADOW_ALL_LEGACY_ROM()
+#endif
+
+//
+// BBS support macros and functions
+//
+#ifdef EFI32
+#define REFRESH_LEGACY_BOOT_OPTIONS \
+ BdsDeleteAllInvalidLegacyBootOptions ();\
+ BdsAddNonExistingLegacyBootOptions (); \
+ BdsUpdateLegacyDevOrder ()
+#else
+#define REFRESH_LEGACY_BOOT_OPTIONS
+#endif
+
+EFI_STATUS
+BdsDeleteAllInvalidLegacyBootOptions (
+ VOID
+ );
+
+EFI_STATUS
+BdsAddNonExistingLegacyBootOptions (
+ VOID
+ );
+
+EFI_STATUS
+BdsUpdateLegacyDevOrder (
+ VOID
+ );
+
+EFI_STATUS
+BdsRefreshBbsTableForBoot (
+ IN BDS_COMMON_OPTION *Entry
+ );
+
+EFI_STATUS
+BdsDeleteBootOption (
+ IN UINTN OptionNumber,
+ IN OUT UINT16 *BootOrder,
+ IN OUT UINTN *BootOrderSize
+ );
+
+//
+//The interface functions relate with Setup Browser Reset Reminder feature
+//
+VOID
+EnableResetReminderFeature (
+ VOID
+ );
+
+VOID
+DisableResetReminderFeature (
+ VOID
+ );
+
+VOID
+EnableResetRequired (
+ VOID
+ );
+
+VOID
+DisableResetRequired (
+ VOID
+ );
+
+BOOLEAN
+IsResetReminderFeatureEnable (
+ VOID
+ );
+
+BOOLEAN
+IsResetRequired (
+ VOID
+ );
+
+VOID
+SetupResetReminder (
+ VOID
+ );
+
+#endif // _BDS_LIB_H_
diff --git a/EdkUnixPkg/Include/Library/UnixLib.h b/EdkUnixPkg/Include/Library/UnixLib.h new file mode 100644 index 0000000000..3ea371af15 --- /dev/null +++ b/EdkUnixPkg/Include/Library/UnixLib.h @@ -0,0 +1,27 @@ +/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ UnixLib.h
+
+Abstract:
+
+ Public include file for the Unix Library
+
+--*/
+
+#ifndef __UNIX_LIB_H__
+#define __UNIX_LIB_H__
+
+extern EFI_UNIX_THUNK_PROTOCOL *gUnix;
+
+#endif diff --git a/EdkUnixPkg/Include/Ppi/UnixAutoScan.h b/EdkUnixPkg/Include/Ppi/UnixAutoScan.h new file mode 100644 index 0000000000..17a4c02b8f --- /dev/null +++ b/EdkUnixPkg/Include/Ppi/UnixAutoScan.h @@ -0,0 +1,66 @@ +/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ UnixAutoscan.h
+
+Abstract:
+
+Unix Autoscan PPI
+
+--*/
+
+#ifndef __UNIX_PEI_AUTOSCAN_H__
+#define __UNIX_PEI_AUTOSCAN_H__
+
+#include <UnixDxe.h>
+
+#define PEI_UNIX_AUTOSCAN_PPI_GUID \
+ { \
+ 0xf2ed3d14, 0x8985, 0x11db, {0xb0, 0x57, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+typedef
+EFI_STATUS
+(EFIAPI *PEI_UNIX_AUTOSCAN) (
+ IN UINTN Index,
+ OUT EFI_PHYSICAL_ADDRESS *MemoryBase,
+ OUT UINT64 *MemorySize
+ );
+
+/*++
+
+Routine Description:
+ This service is called from Index == 0 until it returns EFI_UNSUPPORTED.
+ It allows discontiguous memory regions to be supported by the emulator.
+ It uses gSystemMemory[] and gSystemMemoryCount that were created by
+ parsing the Windows environment variable EFI_MEMORY_SIZE.
+ The size comes from the varaible and the address comes from the call to
+ WinNtOpenFile.
+
+Arguments:
+ Index - Which memory region to use
+ MemoryBase - Return Base address of memory region
+ MemorySize - Return size in bytes of the memory region
+
+Returns:
+ EFI_SUCCESS - If memory region was mapped
+ EFI_UNSUPPORTED - If Index is not supported
+
+--*/
+typedef struct {
+ PEI_UNIX_AUTOSCAN UnixAutoScan;
+} PEI_UNIX_AUTOSCAN_PPI;
+
+extern EFI_GUID gPeiUnixAutoScanPpiGuid;
+
+#endif
diff --git a/EdkUnixPkg/Include/Ppi/UnixFwh.h b/EdkUnixPkg/Include/Ppi/UnixFwh.h new file mode 100644 index 0000000000..869f4c968f --- /dev/null +++ b/EdkUnixPkg/Include/Ppi/UnixFwh.h @@ -0,0 +1,62 @@ +/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ UnixFwh.h
+
+Abstract:
+
+ Unix FWH PPI as defined in Tiano
+
+--*/
+
+#ifndef __UNIX_PEI_FWH_H__
+#define __UNIX_PEI_FWH_H__
+
+#include <UnixDxe.h>
+
+#define UNIX_FWH_PPI_GUID \
+ { \
+ 0xf2f0dc30, 0x8985, 0x11db, {0xa1, 0x5b, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+typedef
+EFI_STATUS
+(EFIAPI *UNIX_FWH_INFORMATION) (
+ IN UINTN Index,
+ IN OUT EFI_PHYSICAL_ADDRESS *FdBase,
+ IN OUT UINT64 *FdSize
+ );
+
+/*++
+
+Routine Description:
+ Return the FD Size and base address. Since the FD is loaded from a
+ file into Windows memory only the SEC will know it's address.
+
+Arguments:
+ Index - Which FD, starts at zero.
+ FdSize - Size of the FD in bytes
+ FdBase - Start address of the FD. Assume it points to an FV Header
+
+Returns:
+ EFI_SUCCESS - Return the Base address and size of the FV
+ EFI_UNSUPPORTED - Index does nto map to an FD in the system
+
+--*/
+typedef struct {
+ UNIX_FWH_INFORMATION UnixFwh;
+} UNIX_FWH_PPI;
+
+extern EFI_GUID gUnixFwhPpiGuid;
+
+#endif
diff --git a/EdkUnixPkg/Include/Ppi/UnixPeiLoadFile.h b/EdkUnixPkg/Include/Ppi/UnixPeiLoadFile.h new file mode 100644 index 0000000000..b91c630b5a --- /dev/null +++ b/EdkUnixPkg/Include/Ppi/UnixPeiLoadFile.h @@ -0,0 +1,65 @@ +/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ UnixPeiLoadFile.h
+
+Abstract:
+
+ Unix Load File PPI.
+
+ When the PEI core is done it calls the DXE IPL via PPI
+
+--*/
+
+#ifndef __UNIX_PEI_LOAD_FILE_H__
+#define __UNIX_PEI_LOAD_FILE_H__
+
+#include <UnixDxe.h>
+
+#define UNIX_PEI_LOAD_FILE_GUID \
+ { \
+ 0xf2f48768, 0x8985, 0x11db, {0xb8, 0xda, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+typedef
+EFI_STATUS
+(EFIAPI *UNIX_PEI_LOAD_FILE) (
+ VOID *Pe32Data,
+ EFI_PHYSICAL_ADDRESS *ImageAddress,
+ UINT64 *ImageSize,
+ EFI_PHYSICAL_ADDRESS *EntryPoint
+ );
+
+/*++
+
+Routine Description:
+ Loads and relocates a PE/COFF image into memory.
+
+Arguments:
+ Pe32Data - The base address of the PE/COFF file that is to be loaded and relocated
+ ImageAddress - The base address of the relocated PE/COFF image
+ ImageSize - The size of the relocated PE/COFF image
+ EntryPoint - The entry point of the relocated PE/COFF image
+
+Returns:
+ EFI_SUCCESS - The file was loaded and relocated
+ EFI_OUT_OF_RESOURCES - There was not enough memory to load and relocate the PE/COFF file
+
+--*/
+typedef struct {
+ UNIX_PEI_LOAD_FILE PeiLoadFileService;
+} UNIX_PEI_LOAD_FILE_PPI;
+
+extern EFI_GUID gUnixPeiLoadFilePpiGuid;
+
+#endif
diff --git a/EdkUnixPkg/Include/Ppi/UnixThunk.h b/EdkUnixPkg/Include/Ppi/UnixThunk.h new file mode 100644 index 0000000000..866bd61398 --- /dev/null +++ b/EdkUnixPkg/Include/Ppi/UnixThunk.h @@ -0,0 +1,56 @@ +/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ UnixThunk.h
+
+Abstract:
+
+ Unix Thunk interface PPI
+
+--*/
+
+#ifndef __UNIX_PEI_UNIX_THUNK_H__
+#define __UNIX_PEI_UNIX_THUNK_H__
+
+#include <UnixDxe.h>
+
+#define PEI_UNIX_THUNK_PPI_GUID \
+ { \
+ 0xf2f830f2, 0x8985, 0x11db, {0x80, 0x6b, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+typedef
+VOID *
+(EFIAPI *PEI_UNIX_THUNK_INTERFACE) (
+ VOID
+ );
+
+/*++
+
+Routine Description:
+ Export of EFI_UNIX_THUNK_PROTOCOL from the Unix SEC.
+
+Arguments:
+ InterfaceBase - Address of the EFI_UNIX_THUNK_PROTOCOL
+
+Returns:
+ EFI_SUCCESS - Data returned
+
+--*/
+typedef struct {
+ PEI_UNIX_THUNK_INTERFACE UnixThunk;
+} PEI_UNIX_THUNK_PPI;
+
+extern EFI_GUID gPeiUnixThunkPpiGuid;
+
+#endif
diff --git a/EdkUnixPkg/Include/Protocol/UnixIo.h b/EdkUnixPkg/Include/Protocol/UnixIo.h new file mode 100644 index 0000000000..6b83c99fe4 --- /dev/null +++ b/EdkUnixPkg/Include/Protocol/UnixIo.h @@ -0,0 +1,132 @@ +/*++
+
+Copyright (c) 2004 - 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ UnixIo.h
+
+Abstract:
+
+--*/
+
+#ifndef _UNIX_IO_H_
+#define _UNIX_IO_H_
+
+#define EFI_UNIX_IO_PROTOCOL_GUID \
+ { \
+ 0xf2e23f54, 0x8985, 0x11db, {0xac, 0x79, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+typedef struct {
+ EFI_UNIX_THUNK_PROTOCOL *UnixThunk;
+ EFI_GUID *TypeGuid;
+ UINT16 *EnvString;
+ UINT16 InstanceNumber;
+} EFI_UNIX_IO_PROTOCOL;
+
+extern EFI_GUID gEfiUnixIoProtocolGuid;
+
+//
+// The following GUIDs are used in EFI_UNIX_IO_PROTOCOL_GUID
+// Device paths. They map 1:1 with NT envirnment variables. The variables
+// define what virtual hardware the emulator/UnixBusDriver will produce.
+//
+//
+// EFI_UNIX_VIRTUAL_DISKS
+//
+#define EFI_UNIX_VIRTUAL_DISKS_GUID \
+ { \
+ 0xf2ba331a, 0x8985, 0x11db, {0xa4, 0x06, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixVirtualDisksGuid;
+
+//
+// EFI_UNIX_PHYSICAL_DISKS
+//
+#define EFI_UNIX_PHYSICAL_DISKS_GUID \
+ { \
+ 0xf2bdcc96, 0x8985, 0x11db, {0x87, 0x19, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixPhysicalDisksGuid;
+
+//
+// EFI_UNIX_FILE_SYSTEM
+//
+#define EFI_UNIX_FILE_SYSTEM_GUID \
+ { \
+ 0xf2c16b9e, 0x8985, 0x11db, {0x92, 0xc8, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixFileSystemGuid;
+
+//
+// EFI_UNIX_UGA
+//
+#define EFI_UNIX_UGA_GUID \
+ { \
+ 0xf2c8b80e, 0x8985, 0x11db, {0x93, 0xf1, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixUgaGuid;
+
+//
+// EFI_UNIX_GOP
+//
+#define EFI_UNIX_GOP_GUID \
+ { \
+ 0xbace07c2, 0x8987, 0x11db, {0xa5, 0x9a, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixGopGuid;
+
+//
+// EFI_UNIX_CONSOLE
+//
+#define EFI_UNIX_CONSOLE_GUID \
+ { \
+ 0xf2cc5d06, 0x8985, 0x11db, {0xbb, 0x19, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixConsoleGuid;
+
+//
+// EFI_UNIX_MEMORY
+//
+#define EFI_UNIX_MEMORY_GUID \
+ { \
+ 0xf2d006cc, 0x8985, 0x11db, {0xa4, 0x72, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixMemoryGuid;
+
+//
+// EFI_UNIX_CPU_MODEL
+//
+#define EFI_UNIX_CPU_MODEL_GUID \
+ { \
+ 0xf2d3b330, 0x8985, 0x11db, {0x8a, 0xa3, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixCPUModelGuid;
+
+//
+// EFI_UNIX_CPU_SPEED
+//
+#define EFI_UNIX_CPU_SPEED_GUID \
+ { \
+ 0xf2d74e5a, 0x8985, 0x11db, {0x97, 0x05, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixCPUSpeedGuid;
+
+#endif
diff --git a/EdkUnixPkg/Include/Protocol/UnixThunk.h b/EdkUnixPkg/Include/Protocol/UnixThunk.h new file mode 100644 index 0000000000..aabb9b130d --- /dev/null +++ b/EdkUnixPkg/Include/Protocol/UnixThunk.h @@ -0,0 +1,187 @@ +/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ UnixThunk.h
+
+Abstract:
+
+ This protocol allows an EFI driver in the Unix emulation environment
+ to make Posix calls.
+
+ NEVER make an Unix call directly, always make the call via this protocol.
+
+ There are no This pointers on the protocol member functions as they map
+ exactly into Unix system calls.
+
+--*/
+
+#ifndef _UNIX_THUNK_H_
+#define _UNIX_THUNK_H_
+
+ +#define EFI_UNIX_THUNK_PROTOCOL_GUID \
+ { \
+ 0xf2e98868, 0x8985, 0x11db, {0x9a, 0x59, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+typedef
+VOID
+(*UnixSleep) (
+ unsigned long Milliseconds
+ );
+
+typedef
+VOID
+(*UnixExit) (
+ int status // exit code for all threads
+ );
+
+typedef +VOID +(*UnixSetTimer) (UINT64 PeriodMs, VOID (*CallBack)(UINT64 DeltaMs)); +typedef +VOID +(*UnixGetLocalTime) (EFI_TIME *Time); +typedef +struct tm * +(*UnixGmTime)(const time_t *timep); +typedef +long +(*UnixGetTimeZone)(void); +typedef +int +(*UnixGetDayLight)(void); +typedef +int +(*UnixPoll)(struct pollfd *pfd, int nfds, int timeout); +typedef +int +(*UnixRead) (int fd, void *buf, int count); +typedef +int +(*UnixWrite) (int fd, const void *buf, int count); +typedef +char * +(*UnixGetenv) (const char *var); +typedef +int +(*UnixOpen) (const char *name, int flags, int mode); +typedef +long int +(*UnixSeek) (int fd, long int off, int whence); +typedef +int +(*UnixFtruncate) (int fd, long int len); +typedef +int +(*UnixClose) (int fd); + +typedef +int +(*UnixMkdir)(const char *pathname, mode_t mode); +typedef +int +(*UnixRmDir)(const char *pathname); +typedef +int +(*UnixUnLink)(const char *pathname); +typedef +int +(*UnixGetErrno)(VOID); +typedef +DIR * +(*UnixOpenDir)(const char *pathname); +typedef +void +(*UnixRewindDir)(DIR *dir); +typedef +struct dirent * +(*UnixReadDir)(DIR *dir); +typedef +int +(*UnixCloseDir)(DIR *dir); +typedef +int +(*UnixStat)(const char *path, struct stat *buf); +typedef +int +(*UnixStatFs)(const char *path, struct statfs *buf); +typedef +int +(*UnixRename)(const char *oldpath, const char *newpath); +typedef +time_t +(*UnixMkTime)(struct tm *tm); +typedef +int +(*UnixFSync)(int fd); +typedef +int +(*UnixChmod)(const char *path, mode_t mode); +typedef +int +(*UnixUTime)(const char *filename, const struct utimbuf *buf); + +struct _EFI_UNIX_UGA_IO_PROTOCOL; +typedef +EFI_STATUS +(*UnixUgaCreate)(struct _EFI_UNIX_UGA_IO_PROTOCOL **UgaIo, + CONST CHAR16 *Title); + +//
+//
+//
+
+#define EFI_UNIX_THUNK_PROTOCOL_SIGNATURE EFI_SIGNATURE_32 ('L', 'N', 'X', 'T')
+
+typedef struct _EFI_UNIX_THUNK_PROTOCOL {
+ UINT64 Signature;
+ + UnixSleep Sleep;
+ UnixExit Exit;
+ UnixSetTimer SetTimer; + UnixGetLocalTime GetLocalTime; + UnixGmTime GmTime; + UnixGetTimeZone GetTimeZone; + UnixGetDayLight GetDayLight; + UnixPoll Poll; + UnixRead Read; + UnixWrite Write; + UnixGetenv Getenv; + UnixOpen Open; + UnixSeek Lseek; + UnixFtruncate FTruncate; + UnixClose Close; + UnixMkdir MkDir; + UnixRmDir RmDir; + UnixUnLink UnLink; + UnixGetErrno GetErrno; + UnixOpenDir OpenDir; + UnixRewindDir RewindDir; + UnixReadDir ReadDir; + UnixCloseDir CloseDir; + UnixStat Stat; + UnixStatFs StatFs; + UnixRename Rename; + UnixMkTime MkTime; + UnixFSync FSync; + UnixChmod Chmod; + UnixUTime UTime; + + UnixUgaCreate UgaCreate; + +} EFI_UNIX_THUNK_PROTOCOL; +
+extern EFI_GUID gEfiUnixThunkProtocolGuid;
+
+#endif
diff --git a/EdkUnixPkg/Include/Protocol/UnixUgaIo.h b/EdkUnixPkg/Include/Protocol/UnixUgaIo.h new file mode 100644 index 0000000000..4ec0bb9b7d --- /dev/null +++ b/EdkUnixPkg/Include/Protocol/UnixUgaIo.h @@ -0,0 +1,72 @@ +/*++
+
+Copyright (c) 2006, Tristan Gingold
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the
+BSD License which accompanies this distribution. The full text of the
+license may be found at http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ UnixUgaIo.h
+
+Abstract:
+
+--*/
+
+#ifndef _UNIX_UGA_IO_H_
+#define _UNIX_UGA_IO_H_
+
+#define EFI_UNIX_UGA_IO_PROTOCOL_GUID \
+ { \
+ 0xf2e5e2c6, 0x8985, 0x11db, {0xa1, 0x91, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+struct _EFI_UNIX_UGA_IO_PROTOCOL; +typedef struct _EFI_UNIX_UGA_IO_PROTOCOL EFI_UNIX_UGA_IO_PROTOCOL;
+ +typedef +EFI_STATUS +(*UGAClose)(EFI_UNIX_UGA_IO_PROTOCOL *Uga); + +typedef +EFI_STATUS +(*UGASize)(EFI_UNIX_UGA_IO_PROTOCOL *Uga, UINT32 Width, UINT32 Height); + +typedef +EFI_STATUS +(*UGACheckKey)(EFI_UNIX_UGA_IO_PROTOCOL *Uga); + +typedef +EFI_STATUS +(*UGAGetKey)(EFI_UNIX_UGA_IO_PROTOCOL *Uga, EFI_INPUT_KEY *key); + +typedef +EFI_STATUS
+(*UGABlt)(EFI_UNIX_UGA_IO_PROTOCOL *Uga, + IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
+ IN EFI_UGA_BLT_OPERATION BltOperation,
+ IN UINTN SourceX,
+ IN UINTN SourceY,
+ IN UINTN DestinationX,
+ IN UINTN DestinationY,
+ IN UINTN Width,
+ IN UINTN Height,
+ IN UINTN Delta OPTIONAL);
+ +struct _EFI_UNIX_UGA_IO_PROTOCOL {
+ VOID *Private; + UGAClose UgaClose; + UGASize UgaSize; + UGACheckKey UgaCheckKey; + UGAGetKey UgaGetKey; + UGABlt UgaBlt; +}; + +
+extern EFI_GUID gEfiUnixUgaIoProtocolGuid;
+
+#endif
diff --git a/EdkUnixPkg/Include/UnixDxe.h b/EdkUnixPkg/Include/UnixDxe.h new file mode 100644 index 0000000000..29a0c16e0f --- /dev/null +++ b/EdkUnixPkg/Include/UnixDxe.h @@ -0,0 +1,36 @@ +/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+ UnixDxe.h
+
+Abstract:
+ Public include file for the Unix Library
+
+--*/
+
+#ifndef __UNIX_DXE_H__
+#define __UNIX_DXE_H__
+
+#include <Ppi/UnixPeiLoadFile.h>
+#include <Ppi/UnixAutoScan.h>
+#include <Ppi/UnixThunk.h>
+#include <Ppi/UnixFwh.h>
+
+//
+// UnixIo.h depends on UnixThunk.h
+//
+
+#include <Common/UnixInclude.h> +#include <Protocol/UnixThunk.h>
+#include <Protocol/UnixIo.h>
+
+#endif
diff --git a/EdkUnixPkg/Include/UnixPeim.h b/EdkUnixPkg/Include/UnixPeim.h new file mode 100644 index 0000000000..4ddda91cbd --- /dev/null +++ b/EdkUnixPkg/Include/UnixPeim.h @@ -0,0 +1,30 @@ +/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+ UnixPeim.h
+
+Abstract:
+ Public include file for the Unix Library
+
+--*/
+
+#ifndef __UNIX_PEIM_H__
+#define __UNIX_PEIM_H__
+
+#include <Ppi/UnixPeiLoadFile.h>
+#include <Ppi/UnixAutoScan.h>
+#include <Ppi/UnixThunk.h>
+#include <Ppi/UnixFwh.h>
+
+#include <Protocol/UnixThunk.h>
+
+#endif
|