summaryrefslogtreecommitdiff
path: root/AppPkg/Applications/Sockets/WebServer/Reboot.c
diff options
context:
space:
mode:
authordarylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524>2011-07-30 00:32:15 +0000
committerdarylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524>2011-07-30 00:32:15 +0000
commit4684b66f261ffb74fa7575ed10df43cc0645a42f (patch)
tree60aca4f9a2359bab6cb85d445a970ba1acf11b26 /AppPkg/Applications/Sockets/WebServer/Reboot.c
parentd7ce700605e1af0e455e31ec11f19ff21d26b525 (diff)
downloadedk2-platforms-4684b66f261ffb74fa7575ed10df43cc0645a42f.tar.xz
Add Socket Library applications.
Modify AppPkg.dsc file to include StdLib.inc which contains the Boilerplate text for Standard Library based Applications. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12062 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'AppPkg/Applications/Sockets/WebServer/Reboot.c')
-rw-r--r--AppPkg/Applications/Sockets/WebServer/Reboot.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/AppPkg/Applications/Sockets/WebServer/Reboot.c b/AppPkg/Applications/Sockets/WebServer/Reboot.c
new file mode 100644
index 0000000000..51c72d67ec
--- /dev/null
+++ b/AppPkg/Applications/Sockets/WebServer/Reboot.c
@@ -0,0 +1,105 @@
+/*++
+ This file contains an 'Intel UEFI Application' and is
+ licensed for Intel CPUs and chipsets under the terms of your
+ license agreement with Intel or your vendor. This file may
+ be modified by the user, subject to additional terms of the
+ license agreement
+--*/
+/*++
+
+Copyright (c) 2011 Intel Corporation. All rights reserved
+This software and associated documentation (if any) is furnished
+under a license and may only be used or copied in accordance
+with the terms of the license. Except as permitted by such
+license, no part of this software or documentation may be
+reproduced, stored in a retrieval system, or transmitted in any
+form or by any means without the express written consent of
+Intel Corporation.
+
+--*/
+
+/** @file
+ Reboot the system
+
+**/
+
+#include <WebServer.h>
+#include <Library/UefiRuntimeServicesTableLib.h>
+
+
+/**
+ Page to reboot the system
+
+ @param [in] SocketFD The socket's file descriptor to add to the list.
+ @param [in] pPort The WSDT_PORT structure address
+ @param [out] pbDone Address to receive the request completion status
+
+ @retval EFI_SUCCESS The request was successfully processed
+
+**/
+EFI_STATUS
+RebootPage (
+ IN int SocketFD,
+ IN WSDT_PORT * pPort,
+ OUT BOOLEAN * pbDone
+ )
+{
+ EFI_STATUS Status;
+
+ DBG_ENTER ( );
+
+ //
+ // Send the Hello World page
+ //
+ for ( ; ; ) {
+ //
+ // Send the page header
+ //
+ Status = HttpPageHeader ( SocketFD, pPort, L"Reboot" );
+ if ( EFI_ERROR ( Status )) {
+ break;
+ }
+
+ //
+ // Send the page body
+ //
+ Status = HttpSendAnsiString ( SocketFD,
+ pPort,
+ "<h1>Reboot</h1>\r\n"
+ "<p>\r\n"
+ " Ouch! The system is rebooting!\r\n" );
+ if ( EFI_ERROR ( Status )) {
+ break;
+ }
+
+ //
+ // Send the page trailer
+ //
+ Status = HttpPageTrailer ( SocketFD, pPort, pbDone );
+ if ( EFI_ERROR ( Status )) {
+ break;
+ }
+
+ //
+ // Deliver the data to the remote system by
+ // closing the socket
+ //
+ close ( SocketFD );
+
+ //
+ // Attempt to reboot the system
+ //
+ DEBUG (( DEBUG_REQUEST, "Reseting System\r\n" ));
+ gRT->ResetSystem ( EfiResetCold,
+ EFI_SUCCESS,
+ 0,
+ NULL );
+ break;
+ }
+
+ //
+ // Return the operation status
+ //
+ DBG_EXIT_STATUS ( Status );
+ return Status;
+}