From 8681bee2820e1a6201db5cc7c629f1e9fa84b760 Mon Sep 17 00:00:00 2001 From: qwang12 Date: Wed, 27 Jun 2007 08:15:43 +0000 Subject: [PATCH] Added in ResetRuntimeDxe git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2793 6f19259b-4bc3-4df7-8a09-765794883524 --- Nt32Pkg/ResetRuntimeDxe/CommonHeader.h | 36 +++++++ Nt32Pkg/ResetRuntimeDxe/Reset.dxs | 31 ++++++ Nt32Pkg/ResetRuntimeDxe/Reset.inf | 96 +++++++++++++++++++ Nt32Pkg/ResetRuntimeDxe/Reset.msa | 58 ++++++++++++ Nt32Pkg/ResetRuntimeDxe/reset.c | 126 +++++++++++++++++++++++++ 5 files changed, 347 insertions(+) create mode 100644 Nt32Pkg/ResetRuntimeDxe/CommonHeader.h create mode 100644 Nt32Pkg/ResetRuntimeDxe/Reset.dxs create mode 100644 Nt32Pkg/ResetRuntimeDxe/Reset.inf create mode 100644 Nt32Pkg/ResetRuntimeDxe/Reset.msa create mode 100644 Nt32Pkg/ResetRuntimeDxe/reset.c diff --git a/Nt32Pkg/ResetRuntimeDxe/CommonHeader.h b/Nt32Pkg/ResetRuntimeDxe/CommonHeader.h new file mode 100644 index 0000000000..20a8ba90c5 --- /dev/null +++ b/Nt32Pkg/ResetRuntimeDxe/CommonHeader.h @@ -0,0 +1,36 @@ +/**@file + Common header file shared by all source files. + + This file includes package header files, library classes and protocol, PPI & GUID definitions. + + Copyright (c) 2006 - 2007, 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. +**/ + +#ifndef __COMMON_HEADER_H_ +#define __COMMON_HEADER_H_ + + +// +// The package level header files this module uses +// +#include +#include +// +// The protocols, PPI and GUID defintions for this module +// +#include +// +// The Library classes this module consumes +// +#include +#include +#include +#include + +#endif diff --git a/Nt32Pkg/ResetRuntimeDxe/Reset.dxs b/Nt32Pkg/ResetRuntimeDxe/Reset.dxs new file mode 100644 index 0000000000..3900efe2dd --- /dev/null +++ b/Nt32Pkg/ResetRuntimeDxe/Reset.dxs @@ -0,0 +1,31 @@ +/*++ + +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: + + Reset.dxs + +Abstract: + + Dependency expression source file. + +--*/ + +// +// Include common header file for this module. +// +#include "CommonHeader.h" + +#include + +DEPENDENCY_START + TRUE +DEPENDENCY_END diff --git a/Nt32Pkg/ResetRuntimeDxe/Reset.inf b/Nt32Pkg/ResetRuntimeDxe/Reset.inf new file mode 100644 index 0000000000..0684623d0e --- /dev/null +++ b/Nt32Pkg/ResetRuntimeDxe/Reset.inf @@ -0,0 +1,96 @@ +#/** @file +# NT Emulation Reset Architectural Protocol Driver as defined in TIANO +# +# This Reset module simulates system reset by process exit on NT. +# Copyright (c) 2006 - 2007, 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. +# +# +#**/ + +################################################################################ +# +# Defines Section - statements that will be processed to create a Makefile. +# +################################################################################ +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = Reset + FILE_GUID = BA929954-35B0-4dd3-90CD-9634BD7E1CF1 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + EDK_RELEASE_VERSION = 0x00020000 + EFI_SPECIFICATION_VERSION = 0x00020000 + + ENTRY_POINT = InitializeNtReset + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 +# + +################################################################################ +# +# Sources Section - list of files that are required for the build to succeed. +# +################################################################################ + +[Sources.common] + Reset.dxs + reset.c + CommonHeader.h + + +################################################################################ +# +# Includes Section - list of Include locations that are required for +# this module. +# +################################################################################ + +[Includes] + $(WORKSPACE)/MdePkg/Include/Library + $(WORKSPACE)/EdkNt32Pkg/Include/Library + +################################################################################ +# +# Package Dependency Section - list of Package files that are required for +# this module. +# +################################################################################ + +[Packages] + MdePkg/MdePkg.dec + + +################################################################################ +# +# Library Class Section - list of Library Classes that are required for +# this module. +# +################################################################################ + +[LibraryClasses] + UefiBootServicesTableLib + WinNtLib + UefiDriverEntryPoint + DebugLib + + +################################################################################ +# +# Protocol C Name Section - list of Protocol and Protocol Notify C Names +# that this module uses or produces. +# +################################################################################ + +[Protocols] + gEfiResetArchProtocolGuid # PROTOCOL ALWAYS_PRODUCED + diff --git a/Nt32Pkg/ResetRuntimeDxe/Reset.msa b/Nt32Pkg/ResetRuntimeDxe/Reset.msa new file mode 100644 index 0000000000..404da8d6ea --- /dev/null +++ b/Nt32Pkg/ResetRuntimeDxe/Reset.msa @@ -0,0 +1,58 @@ + + + + Reset + DXE_DRIVER + BA929954-35B0-4dd3-90CD-9634BD7E1CF1 + 1.0 + NT Emulation Reset Architectural Protocol Driver as defined in TIANO + This Reset module simulates system reset by process exit on NT. + Copyright (c) 2006 - 2007, 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. + FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052 + + + IA32 + false + Reset + + + + DebugLib + + + UefiDriverEntryPoint + + + WinNtLib + + + UefiBootServicesTableLib + + + + reset.c + Reset.dxs + + + + + + + + gEfiResetArchProtocolGuid + + + + EFI_SPECIFICATION_VERSION 0x00020000 + EDK_RELEASE_VERSION 0x00020000 + + InitializeNtReset + + + \ No newline at end of file diff --git a/Nt32Pkg/ResetRuntimeDxe/reset.c b/Nt32Pkg/ResetRuntimeDxe/reset.c new file mode 100644 index 0000000000..a4df52f19a --- /dev/null +++ b/Nt32Pkg/ResetRuntimeDxe/reset.c @@ -0,0 +1,126 @@ +/*++ + +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: + + Reset.c + +Abstract: + + Reset Architectural Protocol as defined in Tiano under NT Emulation + +--*/ + + + +// +// Include common header file for this module. +// +#include "CommonHeader.h" + +EFI_STATUS +EFIAPI +InitializeNtReset ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ); + +STATIC +EFI_STATUS +EFIAPI +WinNtResetSystem ( + IN EFI_RESET_TYPE ResetType, + IN EFI_STATUS ResetStatus, + IN UINTN DataSize, + IN CHAR16 *ResetData OPTIONAL + ); + + +EFI_STATUS +EFIAPI +InitializeNtReset ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +/*++ + +Routine Description: + + +Arguments: + + ImageHandle of the loaded driver + Pointer to the System Table + +Returns: + + Status +--*/ +// TODO: SystemTable - add argument and description to function comment +{ + EFI_STATUS Status; + EFI_HANDLE Handle; + + SystemTable->RuntimeServices->ResetSystem = WinNtResetSystem; + + Handle = NULL; + Status = gBS->InstallMultipleProtocolInterfaces ( + &Handle, + &gEfiResetArchProtocolGuid, + NULL, + NULL + ); + ASSERT_EFI_ERROR (Status); + + return Status; +} + +STATIC +EFI_STATUS +EFIAPI +WinNtResetSystem ( + IN EFI_RESET_TYPE ResetType, + IN EFI_STATUS ResetStatus, + IN UINTN DataSize, + IN CHAR16 *ResetData OPTIONAL + ) +/*++ + +Routine Description: + + TODO: Add function description + +Arguments: + + ResetType - TODO: add argument description + ResetStatus - TODO: add argument description + DataSize - TODO: add argument description + ResetData - TODO: add argument description + +Returns: + + EFI_SUCCESS - TODO: Add description for return value + +--*/ +{ + // + // BUGBUG Need to kill all console windows later + // + // + // Discard ResetType, always return 0 as exit code + // + gWinNt->ExitProcess (0); + + // + // Should never go here + // + return EFI_SUCCESS; +} -- 2.39.2