]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c
Patch to remove STATIC modifier. This is on longer recommended by EFI Framework codin...
[mirror_edk2.git] / MdeModulePkg / Universal / Console / ConSplitterDxe / ConSplitter.c
index 4cf4dd0cf69e87b215de8152538d985695130c9c..dacef61d45d59118961e6b160b99150574c15508 100644 (file)
@@ -30,9 +30,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include "ConSplitter.h"\r
 \r
 //\r
-// Global Variables\r
+// Template for Text In Splitter\r
 //\r
-STATIC TEXT_IN_SPLITTER_PRIVATE_DATA  mConIn = {\r
+TEXT_IN_SPLITTER_PRIVATE_DATA  mConIn = {\r
   TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE,\r
   (EFI_HANDLE) NULL,\r
   {\r
@@ -117,20 +117,29 @@ STATIC TEXT_IN_SPLITTER_PRIVATE_DATA  mConIn = {
   FALSE\r
 };\r
 \r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_UGA_DRAW_PROTOCOL gUgaDrawProtocolTemplate = {\r
+//\r
+// Template for Uga Draw Protocol\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UGA_DRAW_PROTOCOL mUgaDrawProtocolTemplate = {\r
   ConSpliterUgaDrawGetMode,\r
   ConSpliterUgaDrawSetMode,\r
   ConSpliterUgaDrawBlt\r
 };\r
 \r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_GRAPHICS_OUTPUT_PROTOCOL gGraphicsOutputProtocolTemplate = {\r
+//\r
+// Template for Graphics Output Protocol\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_GRAPHICS_OUTPUT_PROTOCOL mGraphicsOutputProtocolTemplate = {\r
   ConSpliterGraphicsOutputQueryMode,\r
   ConSpliterGraphicsOutputSetMode,\r
   ConSpliterGraphicsOutputBlt,\r
   NULL\r
 };\r
 \r
-STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mConOut = {\r
+//\r
+// Template for Text Out Splitter\r
+//\r
+TEXT_OUT_SPLITTER_PRIVATE_DATA mConOut = {\r
   TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE,\r
   (EFI_HANDLE) NULL,\r
   {\r
@@ -194,7 +203,10 @@ STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mConOut = {
   (INT32 *) NULL\r
 };\r
 \r
-STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mStdErr = {\r
+//\r
+// Template for Standard Error Text Out Splitter\r
+//\r
+TEXT_OUT_SPLITTER_PRIVATE_DATA mStdErr = {\r
   TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE,\r
   (EFI_HANDLE) NULL,\r
   {\r
@@ -258,6 +270,9 @@ STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mStdErr = {
   (INT32 *) NULL\r
 };\r
 \r
+//\r
+// Driver binding instance for Console Input Device\r
+//\r
 EFI_DRIVER_BINDING_PROTOCOL           gConSplitterConInDriverBinding = {\r
   ConSplitterConInDriverBindingSupported,\r
   ConSplitterConInDriverBindingStart,\r
@@ -267,6 +282,9 @@ EFI_DRIVER_BINDING_PROTOCOL           gConSplitterConInDriverBinding = {
   NULL\r
 };\r
 \r
+//\r
+// Driver binding instance for Simple Pointer protocol\r
+//\r
 EFI_DRIVER_BINDING_PROTOCOL           gConSplitterSimplePointerDriverBinding = {\r
   ConSplitterSimplePointerDriverBindingSupported,\r
   ConSplitterSimplePointerDriverBindingStart,\r
@@ -288,6 +306,9 @@ EFI_DRIVER_BINDING_PROTOCOL           gConSplitterAbsolutePointerDriverBinding =
   NULL\r
 };\r
 \r
+//\r
+// Driver binding instance for Console Out device\r
+//\r
 EFI_DRIVER_BINDING_PROTOCOL           gConSplitterConOutDriverBinding = {\r
   ConSplitterConOutDriverBindingSupported,\r
   ConSplitterConOutDriverBindingStart,\r
@@ -297,6 +318,9 @@ EFI_DRIVER_BINDING_PROTOCOL           gConSplitterConOutDriverBinding = {
   NULL\r
 };\r
 \r
+//\r
+// Driver binding instance for Standard Error device\r
+//\r
 EFI_DRIVER_BINDING_PROTOCOL           gConSplitterStdErrDriverBinding = {\r
   ConSplitterStdErrDriverBindingSupported,\r
   ConSplitterStdErrDriverBindingStart,\r
@@ -521,7 +545,8 @@ ConSplitterDriverEntry(
                                    structure.\r
 \r
   @retval EFI_OUT_OF_RESOURCES     Out of resources.\r
-  @retval other     Out of resources.\r
+  @retval EFI_SUCCESS              Text Input Devcie's private data has been constructed.\r
+  @retval other                    Failed to construct private data.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -638,6 +663,7 @@ ConSplitterTextInConstructor (
                                    structure.\r
 \r
   @retval EFI_OUT_OF_RESOURCES     Out of resources.\r
+  @retval EFI_SUCCESS              Text Input Devcie's private data has been constructed.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -652,11 +678,11 @@ ConSplitterTextOutConstructor (
   // Copy protocols template\r
   //\r
   if (FeaturePcdGet (PcdConOutUgaSupport)) {\r
-    CopyMem (&ConOutPrivate->UgaDraw, &gUgaDrawProtocolTemplate, sizeof (EFI_UGA_DRAW_PROTOCOL));\r
+    CopyMem (&ConOutPrivate->UgaDraw, &mUgaDrawProtocolTemplate, sizeof (EFI_UGA_DRAW_PROTOCOL));\r
   }\r
 \r
   if (FeaturePcdGet (PcdConOutGopSupport)) {\r
-    CopyMem (&ConOutPrivate->GraphicsOutput, &gGraphicsOutputProtocolTemplate, sizeof (EFI_GRAPHICS_OUTPUT_PROTOCOL));\r
+    CopyMem (&ConOutPrivate->GraphicsOutput, &mGraphicsOutputProtocolTemplate, sizeof (EFI_GRAPHICS_OUTPUT_PROTOCOL));\r
   }\r
 \r
   //\r
@@ -735,13 +761,13 @@ ConSplitterTextOutConstructor (
 \r
     ConOutPrivate->GraphicsOutput.Mode->MaxMode = 1;\r
     //\r
-    // Initial current mode to unknow state, and then set to mode 0\r
+    // Initial current mode to unknown state, and then set to mode 0\r
     //\r
     ConOutPrivate->GraphicsOutput.Mode->Mode = 0xffff;\r
     ConOutPrivate->GraphicsOutput.SetMode (&ConOutPrivate->GraphicsOutput, 0);\r
   }\r
 \r
-  return Status;\r
+  return EFI_SUCCESS;\r
 }\r
 \r
 \r
@@ -814,8 +840,8 @@ ConSplitterSupported (
   @param  RemainingDevicePath Optional parameter use to pick a specific child\r
                               device to start.\r
 \r
-  @retval EFI_SUCCESS         This driver supports this device\r
-  @retval other               This driver does not support this device\r
+  @retval EFI_SUCCESS         This driver supports this device.\r
+  @retval other               This driver does not support this device.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -841,8 +867,8 @@ ConSplitterConInDriverBindingSupported (
   @param  RemainingDevicePath Optional parameter use to pick a specific child\r
                               device to start.\r
 \r
-  @retval EFI_SUCCESS         This driver supports this device\r
-  @retval other               This driver does not support this device\r
+  @retval EFI_SUCCESS         This driver supports this device.\r
+  @retval other               This driver does not support this device.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -869,8 +895,8 @@ ConSplitterSimplePointerDriverBindingSupported (
   @param  RemainingDevicePath Optional parameter use to pick a specific child\r
                               device to start.\r
 \r
-  @retval EFI_SUCCESS         This driver supports this device\r
-  @retval other               This driver does not support this device\r
+  @retval EFI_SUCCESS         This driver supports this device.\r
+  @retval other               This driver does not support this device.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -897,8 +923,8 @@ ConSplitterAbsolutePointerDriverBindingSupported (
   @param  RemainingDevicePath Optional parameter use to pick a specific child\r
                               device to start.\r
 \r
-  @retval EFI_SUCCESS         This driver supports this device\r
-  @retval other               This driver does not support this device\r
+  @retval EFI_SUCCESS         This driver supports this device.\r
+  @retval other               This driver does not support this device.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -924,8 +950,8 @@ ConSplitterConOutDriverBindingSupported (
   @param  RemainingDevicePath Optional parameter use to pick a specific child\r
                               device to start.\r
 \r
-  @retval EFI_SUCCESS         This driver supports this device\r
-  @retval other               This driver does not support this device\r
+  @retval EFI_SUCCESS         This driver supports this device.\r
+  @retval other               This driver does not support this device.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -956,7 +982,7 @@ ConSplitterStdErrDriverBindingSupported (
   @param  InterfaceGuid             The specified protocol to be opened.\r
   @param  Interface                 Protocol interface returned.\r
 \r
-  @retval EFI_SUCCESS               This driver supports this device\r
+  @retval EFI_SUCCESS               This driver supports this device.\r
   @retval other                     Failed to open the specified Console Device Guid\r
                                     or specified protocol.\r
 \r
@@ -1052,6 +1078,9 @@ ConSplitterConInDriverBindingStart (
     return Status;\r
   }\r
 \r
+  //\r
+  // Add this device into Text In devices list.\r
+  //\r
   Status = ConSplitterTextInAddDevice (&mConIn, TextIn);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
@@ -1065,12 +1094,14 @@ ConSplitterConInDriverBindingStart (
                   mConIn.VirtualHandle,\r
                   EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
                   );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
+  if (!EFI_ERROR (Status)) {\r
+    //\r
+    // If Simple Text Input Ex protocol exists,\r
+    // add this device into Text In Ex devices list.\r
+    //\r
+    Status = ConSplitterTextInExAddDevice (&mConIn, TextInEx);\r
   }\r
 \r
-  Status = ConSplitterTextInExAddDevice (&mConIn, TextInEx);\r
-\r
   return Status;\r
 }\r
 \r
@@ -1098,6 +1129,10 @@ ConSplitterSimplePointerDriverBindingStart (
   EFI_STATUS                  Status;\r
   EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer;\r
 \r
+  //\r
+  // Start ConSplitter on ControllerHandle, and create the virtual\r
+  // agrogated console device on first call Start for a SimplePointer handle.\r
+  //\r
   Status = ConSplitterStart (\r
             This,\r
             ControllerHandle,\r
@@ -1110,6 +1145,9 @@ ConSplitterSimplePointerDriverBindingStart (
     return Status;\r
   }\r
 \r
+  //\r
+  // Add this devcie into Simple Pointer devices list.\r
+  //\r
   return ConSplitterSimplePointerAddDevice (&mConIn, SimplePointer);\r
 }\r
 \r
@@ -1137,6 +1175,10 @@ ConSplitterAbsolutePointerDriverBindingStart (
   EFI_STATUS                        Status;\r
   EFI_ABSOLUTE_POINTER_PROTOCOL     *AbsolutePointer;\r
 \r
+  //\r
+  // Start ConSplitter on ControllerHandle, and create the virtual\r
+  // agrogated console device on first call Start for a AbsolutePointer handle.\r
+  //\r
   Status = ConSplitterStart (\r
              This,\r
              ControllerHandle,\r
@@ -1150,6 +1192,9 @@ ConSplitterAbsolutePointerDriverBindingStart (
     return Status;\r
   }\r
 \r
+  //\r
+  // Add this devcie into Absolute Pointer devices list.\r
+  //\r
   return ConSplitterAbsolutePointerAddDevice (&mConIn, AbsolutePointer);\r
 }\r
 \r
@@ -1179,6 +1224,10 @@ ConSplitterConOutDriverBindingStart (
   EFI_GRAPHICS_OUTPUT_PROTOCOL     *GraphicsOutput;\r
   EFI_UGA_DRAW_PROTOCOL            *UgaDraw;\r
 \r
+  //\r
+  // Start ConSplitter on ControllerHandle, and create the virtual\r
+  // agrogated console device on first call Start for a ConsoleOut handle.\r
+  //\r
   Status = ConSplitterStart (\r
             This,\r
             ControllerHandle,\r
@@ -1207,7 +1256,7 @@ ConSplitterConOutDriverBindingStart (
 \r
   if (EFI_ERROR (Status) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
     //\r
-    // Open UGA_DRAW protocol\r
+    // Open UGA DRAW protocol\r
     //\r
     Status = gBS->OpenProtocol (\r
                     ControllerHandle,\r
@@ -1273,6 +1322,10 @@ ConSplitterStdErrDriverBindingStart (
   EFI_STATUS                       Status;\r
   EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *TextOut;\r
 \r
+  //\r
+  // Start ConSplitter on ControllerHandle, and create the virtual\r
+  // agrogated console device on first call Start for a StandardError handle.\r
+  //\r
   Status = ConSplitterStart (\r
             This,\r
             ControllerHandle,\r
@@ -1320,7 +1373,7 @@ ConSplitterStdErrDriverBindingStart (
 \r
 \r
 /**\r
-  Stop ConSplitter on device handle by opening Console Device Guid on device handle \r
+  Stop ConSplitter on device handle by closing Console Device Guid on device handle \r
   and the console virtual handle.\r
   \r
   @param  This                      Protocol instance pointer.\r
@@ -1367,6 +1420,7 @@ ConSplitterStop (
         This->DriverBindingHandle,\r
         ConSplitterVirtualHandle\r
         );\r
+\r
   gBS->CloseProtocol (\r
         ControllerHandle,\r
         DeviceGuid,\r
@@ -1400,10 +1454,10 @@ ConSplitterConInDriverBindingStop (
   IN  EFI_HANDLE                      *ChildHandleBuffer\r
   )\r
 {\r
-  EFI_STATUS                     Status;\r
-  EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn;\r
-\r
+  EFI_STATUS                        Status;\r
+  EFI_SIMPLE_TEXT_INPUT_PROTOCOL    *TextIn;\r
   EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx;\r
+\r
   if (NumberOfChildren == 0) {\r
     return EFI_SUCCESS;\r
   }\r
@@ -1416,16 +1470,20 @@ ConSplitterConInDriverBindingStop (
                   ControllerHandle,\r
                   EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
                   );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Status = ConSplitterTextInExDeleteDevice (&mConIn, TextInEx);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
+  if (!EFI_ERROR (Status)) {\r
+    //\r
+    // If Simple Text Input Ex protocol exists,\r
+    // remove device from Text Input Ex devices list.\r
+    //  \r
+    Status = ConSplitterTextInExDeleteDevice (&mConIn, TextInEx);\r
+    if (EFI_ERROR (Status)) {\r
+      return Status;\r
+    }\r
   }\r
 \r
-\r
+  //\r
+  // Close Simple Text In protocol on controller handle and virtual handle.\r
+  //\r
   Status = ConSplitterStop (\r
             This,\r
             ControllerHandle,\r
@@ -1437,9 +1495,10 @@ ConSplitterConInDriverBindingStop (
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
+\r
   //\r
-  // Delete this console input device's data structures.\r
-  //\r
+  // Remove device from Text Input devices list.\r
+  // \r
   return ConSplitterTextInDeleteDevice (&mConIn, TextIn);\r
 }\r
 \r
@@ -1474,6 +1533,9 @@ ConSplitterSimplePointerDriverBindingStop (
     return EFI_SUCCESS;\r
   }\r
 \r
+  //\r
+  // Close Simple Pointer protocol on controller handle and virtual handle.\r
+  //\r
   Status = ConSplitterStop (\r
             This,\r
             ControllerHandle,\r
@@ -1485,8 +1547,9 @@ ConSplitterSimplePointerDriverBindingStop (
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
+\r
   //\r
-  // Delete this console input device's data structures.\r
+  // Remove this device from Simple Pointer device list.\r
   //\r
   return ConSplitterSimplePointerDeleteDevice (&mConIn, SimplePointer);\r
 }\r
@@ -1522,6 +1585,9 @@ ConSplitterAbsolutePointerDriverBindingStop (
     return EFI_SUCCESS;\r
   }\r
 \r
+  //\r
+  // Close Absolute Pointer protocol on controller handle and virtual handle.\r
+  //\r
   Status = ConSplitterStop (\r
              This,\r
              ControllerHandle,\r
@@ -1533,8 +1599,9 @@ ConSplitterAbsolutePointerDriverBindingStop (
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
+\r
   //\r
-  // Delete this console input device's data structures.\r
+  // Remove this device from Absolute Pointer device list.\r
   //\r
   return ConSplitterAbsolutePointerDeleteDevice (&mConIn, AbsolutePointer);\r
 }\r
@@ -1569,6 +1636,9 @@ ConSplitterConOutDriverBindingStop (
     return EFI_SUCCESS;\r
   }\r
 \r
+  //\r
+  // Close Absolute Pointer protocol on controller handle and virtual handle.\r
+  //\r
   Status = ConSplitterStop (\r
             This,\r
             ControllerHandle,\r
@@ -1582,7 +1652,7 @@ ConSplitterConOutDriverBindingStop (
   }\r
 \r
   //\r
-  // Delete this console output device's data structures.\r
+  // Remove this device from Text Out device list.\r
   //\r
   return ConSplitterTextOutDeleteDevice (&mConOut, TextOut);\r
 }\r
@@ -1617,6 +1687,9 @@ ConSplitterStdErrDriverBindingStop (
     return EFI_SUCCESS;\r
   }\r
 \r
+  //\r
+  // Close Standard Error Device on controller handle and virtual handle.\r
+  //\r
   Status = ConSplitterStop (\r
             This,\r
             ControllerHandle,\r
@@ -3111,9 +3184,7 @@ ConSplitterTextOutDeleteDevice (
 \r
   return Status;\r
 }\r
-//\r
-// ConSplitter TextIn member functions\r
-//\r
+\r
 \r
 /**\r
   Reset the input device and optionaly run diagnostics\r
@@ -3280,7 +3351,7 @@ ConSpliterConsoleControlLockStdInEvent (
           BackSpaceString[0]  = CHAR_BACKSPACE;\r
           BackSpaceString[1]  = 0;\r
 \r
-          SpaceString[0]      = ' ';\r
+          SpaceString[0]      = L' ';\r
           SpaceString[1]      = 0;\r
 \r
           ConSplitterTextOutOutputString (&mConOut.TextOut, BackSpaceString);\r
@@ -3441,6 +3512,7 @@ ConSplitterTextInWaitForKey (
 \r
 \r
 /**\r
+  Test if the key has been registered on input device.\r
 \r
   @param  RegsiteredData           A pointer to a buffer that is filled in with the\r
                                    keystroke state data for the key that was\r
@@ -3482,10 +3554,6 @@ IsKeyRegistered (
 \r
 }\r
 \r
-//\r
-// Simple Text Input Ex protocol functions\r
-//\r
-\r
 \r
 /**\r
   Reset the input device and optionaly run diagnostics\r
@@ -4065,11 +4133,6 @@ ConSplitterSimplePointerWaitForInput (
   }\r
 }\r
 \r
-//\r
-// Absolute Pointer Protocol functions\r
-//\r
-\r
-\r
 /**\r
   Resets the pointer device hardware.\r
 \r