Add support for SerialPortLib that maps into POSIX StdIn and StdOut. Add a device path text to lib as a holding point waiting on getting it reviewed for other packages. Some minor fixes. Also map the FV as writable, so the Variable store becomes writable.

I plan to try and make only the Variable store and logs writable, and make the executable/compressed FV read only in a future checkin. 



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11760 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
andrewfish
2011-06-08 02:34:12 +00:00
parent 6f18b50d02
commit 7e284acb40
17 changed files with 507 additions and 17 deletions

View File

@@ -0,0 +1,78 @@
/** @file
Null Platform Hook Library instance.
Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
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.
**/
#include <Base.h>
#include <Protocol/EmuThunk.h>
#include <Protocol/EmuGraphicsWindow.h>
#include <Protocol/EmuBlockIo.h>
#include <Protocol/SimpleFileSystem.h>
#include <Protocol/EmuThread.h>
#include <Library/DevicePathTextLib.h>
#include <Library/BaseMemoryLib.h>
/**
Converts a Vendor device path structure to its string representative.
@param Str The string representative of input device.
@param DevPath The input device path structure.
@param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
of the display node is used, where applicable. If DisplayOnly
is FALSE, then the longer text representation of the display node
is used.
@param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
representation for a device node can be used, where applicable.
@return EFI_NOT_FOUND if no string representation exists.
@return EFI_SUCCESS a string representation was created.
**/
EFI_STATUS
EFIAPI
DevPathToTextVendorLib (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
EMU_VENDOR_DEVICE_PATH_NODE *Vendor;
CHAR16 *Type;
Vendor = (EMU_VENDOR_DEVICE_PATH_NODE *)DevPath;
if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEmuThunkProtocolGuid)) {
CatPrint (Str, L"EmuThunk()");
return EFI_SUCCESS;
}
if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEmuGraphicsWindowProtocolGuid)) {
CatPrint (Str, L"EmuGraphics(%d)", Vendor->Instance);
return EFI_SUCCESS;
}
if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEfiSimpleFileSystemProtocolGuid)) {
CatPrint (Str, L"EmuFs(%d)", Vendor->Instance);
return EFI_SUCCESS;
}
if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEmuBlockIoProtocolGuid)) {
CatPrint (Str, L"EmuBlk(%d)", Vendor->Instance);
return EFI_SUCCESS;
}
if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEmuThreadThunkProtocolGuid)) {
CatPrint (Str, L"EmuThread()");
return EFI_SUCCESS;
}
return EFI_NOT_FOUND;
}

View File

@@ -0,0 +1,45 @@
## @file
# Null DevicePathToText library.
#
# Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
#
# 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.
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = DevicePathTextLib
FILE_GUID = DCD1F939-1732-CA4D-81B7-C757AEC84DBC
MODULE_TYPE = BASE
VERSION_STRING = 1.0
LIBRARY_CLASS = DevicePathTextLib
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
#
[Sources]
DevicePathTextLib.c
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
InOsEmuPkg/InOsEmuPkg.dec
[LibraryClasses]
BaseMemoryLib
[Protocols]
gEmuThunkProtocolGuid
gEmuGraphicsWindowProtocolGuid
gEfiSimpleFileSystemProtocolGuid
gEmuBlockIoProtocolGuid
gEmuThreadThunkProtocolGuid

View File

@@ -39,7 +39,7 @@ SerialPortInitialize (
VOID
)
{
return RETURN_SUCCESS;
return gEmuThunk->ConfigStdIn ();
}
/**
@@ -66,7 +66,7 @@ SerialPortWrite (
IN UINTN NumberOfBytes
)
{
return gEmuThunk->WriteStdErr (Buffer, NumberOfBytes);
return gEmuThunk->WriteStdOut (Buffer, NumberOfBytes);
}
@@ -93,7 +93,7 @@ SerialPortRead (
IN UINTN NumberOfBytes
)
{
return 0;
return gEmuThunk->ReadStdIn (Buffer, NumberOfBytes);
}
/**
@@ -113,7 +113,7 @@ SerialPortPoll (
VOID
)
{
return FALSE;
return gEmuThunk->PollStdIn ();
}

View File

@@ -16,7 +16,7 @@
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = DxeEmuSerialPortLibNull
BASE_NAME = DxeEmuSerialPortLib
FILE_GUID = DF08A29A-F60B-E649-AA79-A1490E863A5D
MODULE_TYPE = PEIM
VERSION_STRING = 1.0

View File

@@ -0,0 +1,119 @@
/** @file
Serial Port Lib that thunks back to Emulator services to write to StdErr.
All read functions are stubed out.
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
Portions copyright (c) 2011, Apple Inc. All rights reserved.<BR>
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.
**/
#include <PiDxe.h>
#include <Library/SerialPortLib.h>
#include <Library/EmuThunkLib.h>
/**
Initialize the serial device hardware.
If no initialization is required, then return RETURN_SUCCESS.
If the serial device was successfully initialized, then return RETURN_SUCCESS.
If the serial device could not be initialized, then return RETURN_DEVICE_ERROR.
@retval RETURN_SUCCESS The serial device was initialized.
@retval RETURN_DEVICE_ERROR The serial device could not be initialized.
**/
RETURN_STATUS
EFIAPI
SerialPortInitialize (
VOID
)
{
return RETURN_SUCCESS;
}
/**
Write data from buffer to serial device.
Writes NumberOfBytes data bytes from Buffer to the serial device.
The number of bytes actually written to the serial device is returned.
If the return value is less than NumberOfBytes, then the write operation failed.
If Buffer is NULL, then ASSERT().
If NumberOfBytes is zero, then return 0.
@param Buffer The pointer to the data buffer to be written.
@param NumberOfBytes The number of bytes to written to the serial device.
@retval 0 NumberOfBytes is 0.
@retval >0 The number of bytes written to the serial device.
If this value is less than NumberOfBytes, then the read operation failed.
**/
UINTN
EFIAPI
SerialPortWrite (
IN UINT8 *Buffer,
IN UINTN NumberOfBytes
)
{
return gEmuThunk->WriteStdErr (Buffer, NumberOfBytes);
}
/**
Read data from serial device and save the datas in buffer.
Reads NumberOfBytes data bytes from a serial device into the buffer
specified by Buffer. The number of bytes actually read is returned.
If the return value is less than NumberOfBytes, then the rest operation failed.
If Buffer is NULL, then ASSERT().
If NumberOfBytes is zero, then return 0.
@param Buffer The pointer to the data buffer to store the data read from the serial device.
@param NumberOfBytes The number of bytes which will be read.
@retval 0 Read data failed; No data is to be read.
@retval >0 The actual number of bytes read from serial device.
**/
UINTN
EFIAPI
SerialPortRead (
OUT UINT8 *Buffer,
IN UINTN NumberOfBytes
)
{
return 0;
}
/**
Polls a serial device to see if there is any data waiting to be read.
Polls a serial device to see if there is any data waiting to be read.
If there is data waiting to be read from the serial device, then TRUE is returned.
If there is no data waiting to be read from the serial device, then FALSE is returned.
@retval TRUE Data is waiting to be read from the serial device.
@retval FALSE There is no data waiting to be read from the serial device.
**/
BOOLEAN
EFIAPI
SerialPortPoll (
VOID
)
{
return FALSE;
}

View File

@@ -0,0 +1,40 @@
## @file
# Write only instance of Serial Port Library with empty functions.
#
# Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
# Portions copyright (c) 2011, Apple Inc. 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.
#
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = DxeEmuStdErrSerialPortLib
FILE_GUID = 4EED5138-C512-9E4F-AB13-149B87D40453
MODULE_TYPE = PEIM
VERSION_STRING = 1.0
LIBRARY_CLASS = SerialPortLib| DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER SMM_CORE UEFI_APPLICATION UEFI_DRIVE
[Sources]
DxeEmuStdErrSerialPortLib.c
[Packages]
MdePkg/MdePkg.dec
InOsEmuPkg/InOsEmuPkg.dec
[LibraryClasses]
EmuThunkLib