]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.c
Code Scrub for ConPlatform.
[mirror_edk2.git] / MdeModulePkg / Universal / Console / ConPlatformDxe / ConPlatform.c
index e8db9ad3db52da28b52e1a9bba96e292fb366542..f2f7d4caecf96064ee1732938b770a0930530d3a 100644 (file)
@@ -35,13 +35,15 @@ EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextOutDriverBinding = {
 };\r
 \r
 /**\r
-  The user Entry Point for module ConPlatform. The user code starts with this function.\r
+  Entrypoint of this module.\r
+\r
+  This function is the entrypoint of this module. It installs Driver Binding\r
+  Protocols together with Component Name Protocols.\r
 \r
   @param  ImageHandle       The firmware allocated handle for the EFI image.\r
   @param  SystemTable       A pointer to the EFI System Table.\r
 \r
   @retval EFI_SUCCESS       The entry point is executed successfully.\r
-  @retval other             Some error occurs when executing this entry point.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -53,9 +55,6 @@ InitializeConPlatform(
 {\r
   EFI_STATUS              Status;\r
 \r
-  //\r
-  // Install driver model protocol(s).\r
-  //\r
   Status = EfiLibInstallDriverBindingComponentName2 (\r
              ImageHandle,\r
              SystemTable,\r
@@ -76,13 +75,12 @@ InitializeConPlatform(
              );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-\r
-  return Status;\r
+  return EFI_SUCCESS;\r
 }\r
 \r
 \r
 /**\r
-  Test to see if EFI Text In Protocol could be supported on the ControllerHandle. \r
+  Test to see if EFI_SIMPLE_TEXT_INPUT_PROTOCOL is supported on ControllerHandle. \r
 \r
   @param  This                Protocol instance pointer.\r
   @param  ControllerHandle    Handle of device to test.\r
@@ -98,20 +96,19 @@ EFIAPI
 ConPlatformTextInDriverBindingSupported (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL  *This,\r
   IN  EFI_HANDLE                   ControllerHandle,\r
-  IN  EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
+  IN  EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath  OPTIONAL\r
   )\r
 {\r
   return ConPlatformDriverBindingSupported (\r
-          This,\r
-          ControllerHandle,\r
-          RemainingDevicePath,\r
-          &gEfiSimpleTextInProtocolGuid\r
-          );\r
+           This,\r
+           ControllerHandle,\r
+           &gEfiSimpleTextInProtocolGuid\r
+           );\r
 }\r
 \r
 \r
 /**\r
-  Test to see if EFI Text Out Protocol could be supported on the ControllerHandle. \r
+  Test to see if EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL is supported on ControllerHandle. \r
 \r
   @param  This                Protocol instance pointer.\r
   @param  ControllerHandle    Handle of device to test.\r
@@ -127,25 +124,22 @@ EFIAPI
 ConPlatformTextOutDriverBindingSupported (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL  *This,\r
   IN  EFI_HANDLE                   ControllerHandle,\r
-  IN  EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
+  IN  EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath  OPTIONAL\r
   )\r
 {\r
   return ConPlatformDriverBindingSupported (\r
-          This,\r
-          ControllerHandle,\r
-          RemainingDevicePath,\r
-          &gEfiSimpleTextOutProtocolGuid\r
-          );\r
+           This,\r
+           ControllerHandle,\r
+           &gEfiSimpleTextOutProtocolGuid\r
+           );\r
 }\r
 \r
 \r
 /**\r
-  Test to see if the specified Protocol could be supported on the ControllerHandle. \r
+  Test to see if the specified protocol is supported on ControllerHandle. \r
 \r
   @param  This                Protocol instance pointer.\r
   @param  ControllerHandle    Handle of device to test.\r
-  @param  RemainingDevicePath Optional parameter use to pick a specific child\r
-                              device to start.\r
   @param  ProtocolGuid        The specfic protocol.\r
 \r
   @retval EFI_SUCCESS         This driver supports this device.\r
@@ -156,7 +150,6 @@ EFI_STATUS
 ConPlatformDriverBindingSupported (\r
   IN  EFI_DRIVER_BINDING_PROTOCOL  *This,\r
   IN  EFI_HANDLE                   ControllerHandle,\r
-  IN  EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath,\r
   IN  EFI_GUID                     *ProtocolGuid\r
   )\r
 {\r
@@ -194,17 +187,19 @@ ConPlatformDriverBindingSupported (
   }\r
 \r
   gBS->CloseProtocol (\r
-        ControllerHandle,\r
-        ProtocolGuid,\r
-        This->DriverBindingHandle,\r
-        ControllerHandle\r
-        );\r
+         ControllerHandle,\r
+         ProtocolGuid,\r
+         This->DriverBindingHandle,\r
+         ControllerHandle\r
+         );\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
 /**\r
-  Start this driver on ControllerHandle by opening Simple Text In protocol,\r
+  Start this driver on the device for console input.\r
+\r
+  Start this driver on ControllerHandle by opening Simple Text Input Protocol,\r
   reading Device Path, and installing Console In Devcice GUID on ControllerHandle.\r
 \r
   If this devcie is not one hot-plug devce, append its device path into the \r
@@ -228,8 +223,8 @@ ConPlatformTextInDriverBindingStart (
   IN  EFI_DEVICE_PATH_PROTOCOL      *RemainingDevicePath\r
   )\r
 {\r
-  EFI_STATUS                  Status;\r
-  EFI_DEVICE_PATH_PROTOCOL    *DevicePath;\r
+  EFI_STATUS                     Status;\r
+  EFI_DEVICE_PATH_PROTOCOL       *DevicePath;\r
   EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn;\r
 \r
   //\r
@@ -247,7 +242,7 @@ ConPlatformTextInDriverBindingStart (
     return Status;\r
   }\r
   //\r
-  // Open the Simple Input Protocol BY_DRIVER\r
+  // Open the Simple Text Input Protocol BY_DRIVER\r
   //\r
   Status = gBS->OpenProtocol (\r
                   ControllerHandle,\r
@@ -268,14 +263,15 @@ ConPlatformTextInDriverBindingStart (
   //\r
   if (IsHotPlugDevice (This->DriverBindingHandle, ControllerHandle)) {\r
     gBS->InstallMultipleProtocolInterfaces (\r
-          &ControllerHandle,\r
-          &gEfiConsoleInDeviceGuid,\r
-          NULL,\r
-          NULL\r
-          );\r
+           &ControllerHandle,\r
+           &gEfiConsoleInDeviceGuid,\r
+           NULL,\r
+           NULL\r
+           );\r
   } else {\r
     //\r
-    // Append the device path to the ConInDev environment variable\r
+    // If it is not a hot-plug device, append the device path to the\r
+    // ConInDev environment variable\r
     //\r
     ConPlatformUpdateDeviceVariable (\r
       L"ConInDev",\r
@@ -284,29 +280,29 @@ ConPlatformTextInDriverBindingStart (
       );\r
 \r
     //\r
-    // If the device path is an instance in the ConIn environment variable,\r
+    // If the device path is successfully added to the ConIn environment variable,\r
     // then install EfiConsoleInDeviceGuid onto ControllerHandle\r
     //\r
     Status = ConPlatformUpdateDeviceVariable (\r
-              L"ConIn",\r
-              DevicePath,\r
-              CHECK\r
-              );\r
+               L"ConIn",\r
+               DevicePath,\r
+               CHECK\r
+               );\r
 \r
     if (!EFI_ERROR (Status)) {\r
       gBS->InstallMultipleProtocolInterfaces (\r
-            &ControllerHandle,\r
-            &gEfiConsoleInDeviceGuid,\r
-            NULL,\r
-            NULL\r
-            );\r
+             &ControllerHandle,\r
+             &gEfiConsoleInDeviceGuid,\r
+             NULL,\r
+             NULL\r
+             );\r
     } else {\r
       gBS->CloseProtocol (\r
-            ControllerHandle,\r
-            &gEfiSimpleTextInProtocolGuid,\r
-            This->DriverBindingHandle,\r
-            ControllerHandle\r
-            );\r
+             ControllerHandle,\r
+             &gEfiSimpleTextInProtocolGuid,\r
+             This->DriverBindingHandle,\r
+             ControllerHandle\r
+             );\r
     }\r
   }\r
 \r
@@ -314,7 +310,9 @@ ConPlatformTextInDriverBindingStart (
 }\r
 \r
 /**\r
-  Start this driver on ControllerHandle by opening Simple Text Out protocol,\r
+  Start this driver on the device for console output and stardard error output.\r
+\r
+  Start this driver on ControllerHandle by opening Simple Text Output Protocol,\r
   reading Device Path, and installing Console Out Devcic GUID, Standard Error\r
   Device GUID on ControllerHandle.\r
 \r
@@ -339,10 +337,10 @@ ConPlatformTextOutDriverBindingStart (
   IN  EFI_DEVICE_PATH_PROTOCOL      *RemainingDevicePath\r
   )\r
 {\r
-  EFI_STATUS                    Status;\r
-  EFI_DEVICE_PATH_PROTOCOL      *DevicePath;\r
+  EFI_STATUS                       Status;\r
+  EFI_DEVICE_PATH_PROTOCOL         *DevicePath;\r
   EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *TextOut;\r
-  BOOLEAN                       NeedClose;\r
+  BOOLEAN                          NeedClose;\r
 \r
   NeedClose = TRUE;\r
 \r
@@ -382,14 +380,15 @@ ConPlatformTextOutDriverBindingStart (
   //\r
   if (IsHotPlugDevice (This->DriverBindingHandle, ControllerHandle)) {\r
     gBS->InstallMultipleProtocolInterfaces (\r
-          &ControllerHandle,\r
-          &gEfiConsoleOutDeviceGuid,\r
-          NULL,\r
-          NULL\r
-          );\r
+           &ControllerHandle,\r
+           &gEfiConsoleOutDeviceGuid,\r
+           NULL,\r
+           NULL\r
+           );\r
   } else {\r
     //\r
-    // Append the device path to the ConOutDev environment variable\r
+    // If it is not a hot-plug device, first append the device path to the\r
+    // ConOutDev environment variable\r
     //\r
     ConPlatformUpdateDeviceVariable (\r
       L"ConOutDev",\r
@@ -397,7 +396,7 @@ ConPlatformTextOutDriverBindingStart (
       APPEND\r
       );\r
     //\r
-    // Append the device path to the StdErrDev environment variable\r
+    // Then append the device path to the StdErrDev environment variable\r
     //\r
     ConPlatformUpdateDeviceVariable (\r
       L"ErrOutDev",\r
@@ -406,14 +405,14 @@ ConPlatformTextOutDriverBindingStart (
       );\r
 \r
     //\r
-    // If the device path is an instance in the ConOut environment variable,\r
+    // If the device path is successfully added to the ConOut environment variable,\r
     // then install EfiConsoleOutDeviceGuid onto ControllerHandle\r
     //\r
     Status = ConPlatformUpdateDeviceVariable (\r
-              L"ConOut",\r
-              DevicePath,\r
-              CHECK\r
-              );\r
+               L"ConOut",\r
+               DevicePath,\r
+               CHECK\r
+               );\r
 \r
     if (!EFI_ERROR (Status)) {\r
       NeedClose = FALSE;\r
@@ -425,31 +424,31 @@ ConPlatformTextOutDriverBindingStart (
                       );\r
     }\r
     //\r
-    // If the device path is an instance in the StdErr environment variable,\r
+    // If the device path is successfully added to the StdErr environment variable,\r
     // then install EfiStandardErrorDeviceGuid onto ControllerHandle\r
     //\r
     Status = ConPlatformUpdateDeviceVariable (\r
-              L"ErrOut",\r
-              DevicePath,\r
-              CHECK\r
-              );\r
+               L"ErrOut",\r
+               DevicePath,\r
+               CHECK\r
+               );\r
     if (!EFI_ERROR (Status)) {\r
       NeedClose = FALSE;\r
       gBS->InstallMultipleProtocolInterfaces (\r
-            &ControllerHandle,\r
-            &gEfiStandardErrorDeviceGuid,\r
-            NULL,\r
-            NULL\r
-            );\r
+             &ControllerHandle,\r
+             &gEfiStandardErrorDeviceGuid,\r
+             NULL,\r
+             NULL\r
+             );\r
     }\r
 \r
     if (NeedClose) {\r
       gBS->CloseProtocol (\r
-            ControllerHandle,\r
-            &gEfiSimpleTextOutProtocolGuid,\r
-            This->DriverBindingHandle,\r
-            ControllerHandle\r
-            );\r
+             ControllerHandle,\r
+             &gEfiSimpleTextOutProtocolGuid,\r
+             This->DriverBindingHandle,\r
+             ControllerHandle\r
+             );\r
     }\r
   }\r
 \r
@@ -458,7 +457,7 @@ ConPlatformTextOutDriverBindingStart (
 \r
 /**\r
   Stop this driver on ControllerHandle by removing Console In Devcice GUID \r
-  and closing the Simple Text In protocol on ControllerHandle.\r
+  and closing the Simple Text Input protocol on ControllerHandle.\r
 \r
   @param  This              Protocol instance pointer.\r
   @param  ControllerHandle  Handle of device to stop driver on\r
@@ -483,8 +482,7 @@ ConPlatformTextInDriverBindingStop (
   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
 \r
   //\r
-  // hot plug device is not included into the console associated variables,\r
-  // so no need to check variable for those hot plug devices.\r
+  // If it is not a hot-plug device, first delete it from the ConInDev variable.\r
   //\r
   if (!IsHotPlugDevice (This->DriverBindingHandle, ControllerHandle)) {\r
     //\r
@@ -519,7 +517,7 @@ ConPlatformTextInDriverBindingStop (
     );\r
 \r
   //\r
-  // Close the Simple Input Protocol\r
+  // Close the Simple Text Input Protocol\r
   //\r
   gBS->CloseProtocol (\r
         ControllerHandle,\r
@@ -534,7 +532,7 @@ ConPlatformTextInDriverBindingStop (
 \r
 /**\r
   Stop this driver on ControllerHandle by removing Console Out Devcice GUID \r
-  and closing the Simple Text Out protocol on ControllerHandle.\r
+  and closing the Simple Text Output protocol on ControllerHandle.\r
 \r
   @param  This              Protocol instance pointer.\r
   @param  ControllerHandle  Handle of device to stop driver on\r
@@ -559,8 +557,7 @@ ConPlatformTextOutDriverBindingStop (
   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
 \r
   //\r
-  // hot plug device is not included into the console associated variables,\r
-  // so no need to check variable for those hot plug devices.\r
+  // If it is not a hot-plug device, first delete it from the ConOutDev and StdErrDev variable.\r
   //\r
   if (!IsHotPlugDevice (This->DriverBindingHandle, ControllerHandle)) {\r
     //\r
@@ -626,8 +623,6 @@ ConPlatformTextOutDriverBindingStop (
   @param Handle          Handle of device to uninstall protocol on.\r
   @param ProtocolGuid    The specified protocol need to be uninstalled.\r
 \r
-  @return None.\r
-\r
 **/\r
 VOID\r
 ConPlatformUnInstallProtocol (\r
@@ -649,19 +644,22 @@ ConPlatformUnInstallProtocol (
 \r
   if (!EFI_ERROR (Status)) {\r
     gBS->UninstallMultipleProtocolInterfaces (\r
-          Handle,\r
-          ProtocolGuid,\r
-          NULL,\r
-          NULL\r
-          );\r
+           Handle,\r
+           ProtocolGuid,\r
+           NULL,\r
+           NULL\r
+           );\r
   }\r
 \r
   return ;\r
 }\r
 \r
 /**\r
-  Read the EFI variable (Name) and return a dynamically allocated\r
-  buffer, and the size of the buffer. On failure return NULL.\r
+  Get the necessary size of buffer and read the variabe.\r
+\r
+  First get the necessary size of buffer. Then read the\r
+  EFI variable (Name) and return a dynamically allocated\r
+  buffer. On failure return NULL.\r
 \r
   @param  Name             String part of EFI variable name\r
 \r
@@ -683,7 +681,7 @@ ConPlatformGetVariable (
   Buffer      = NULL;\r
 \r
   //\r
-  // Test to see if the variable exists.  If it doesn't, reuturn NULL.\r
+  // Test to see if the variable exists.  If it doesn't, return NULL.\r
   //\r
   Status = gRT->GetVariable (\r
                   Name,\r
@@ -727,7 +725,6 @@ ConPlatformGetVariable (
   Function compares a device path data structure to that of all the nodes of a\r
   second device path instance.\r
 \r
-\r
   @param Multi           A pointer to a multi-instance device path data structure.\r
   @param Single          A pointer to a single-instance device path data structure.\r
   @param NewDevicePath   If Delete is TRUE, this parameter must not be null, and it\r
@@ -737,8 +734,11 @@ ConPlatformGetVariable (
                          If FALSE, the routine just check whether Single matches\r
                          with any instance in Multi.\r
 \r
-  @retval EFI_SUCCESS    If the Single is contained within Multi.\r
-  @retval EFI_NOT_FOUND  If the Single is not contained within Multi.\r
+  @retval EFI_SUCCESS           If the Single is contained within Multi.\r
+  @retval EFI_NOT_FOUND         If the Single is not contained within Multi.\r
+  @retval EFI_INVALID_PARAMETER Multi is NULL.\r
+  @retval EFI_INVALID_PARAMETER Single is NULL.\r
+  @retval EFI_INVALID_PARAMETER NewDevicePath is NULL when Delete is TRUE.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -759,14 +759,16 @@ ConPlatformMatchDevicePaths (
   // The passed in DevicePath should not be NULL\r
   //\r
   if ((Multi == NULL) || (Single == NULL)) {\r
-    return EFI_NOT_FOUND;\r
+    return EFI_INVALID_PARAMETER;\r
   }\r
 \r
   //\r
   // If performing Delete operation, the NewDevicePath must not be NULL.\r
   //\r
   if (Delete) {\r
-    ASSERT (NewDevicePath != NULL);\r
+    if (NewDevicePath == NULL) {\r
+      return EFI_INVALID_PARAMETER;\r
+    }\r
   }\r
 \r
   TempDevicePath1 = NULL;\r
@@ -789,7 +791,8 @@ ConPlatformMatchDevicePaths (
     } else {\r
       if (Delete) {\r
         //\r
-        // Append the mis-matched devcie path into remaining device path.\r
+        // If the node of Multi does not match Single, then added it back to the result.\r
+        // That is, the node matching Single will be dropped and deleted from result.\r
         //\r
         TempDevicePath2 = AppendDevicePathInstance (\r
                             TempDevicePath1,\r
@@ -808,7 +811,7 @@ ConPlatformMatchDevicePaths (
 \r
   if (Delete) {\r
     //\r
-    // Return the remaining device path data structure\r
+    // Return the new device path data structure with specified node deleted.\r
     //\r
     *NewDevicePath = TempDevicePath1;\r
     return EFI_SUCCESS;\r
@@ -823,7 +826,7 @@ ConPlatformMatchDevicePaths (
   @param  VariableName    Console environment variables, ConOutDev, ConInDev\r
                           StdErrDev, ConIn or ConOut.\r
   @param  DevicePath      Console devcie's device path.\r
-  @param  Operation       Variable operations, such as APPEND or DELETE.\r
+  @param  Operation       Variable operations, including APPEND, CHECK and DELETE.\r
 \r
   @retval EFI_SUCCESS           Variable operates successfully.\r
   @retval EFI_OUT_OF_RESOURCES  If variable cannot be appended.\r
@@ -856,15 +859,17 @@ ConPlatformUpdateDeviceVariable (
     // Match specified DevicePath in Console Variable.\r
     // \r
     Status = ConPlatformMatchDevicePaths (\r
-              VariableDevicePath,\r
-              DevicePath,\r
-              NULL,\r
-              FALSE\r
-              );\r
+               VariableDevicePath,\r
+               DevicePath,\r
+               NULL,\r
+               FALSE\r
+               );\r
 \r
     if ((Operation == CHECK) || (!EFI_ERROR (Status))) {\r
       //\r
-      // The device path is already in the variable\r
+      // Branch here includes 2 cases:\r
+      // 1. Operation is CHECK, simply return Status.\r
+      // 2. Operation is APPEND, and device path already exists in variable, also return.\r
       //\r
       if (VariableDevicePath != NULL) {\r
         FreePool (VariableDevicePath);\r
@@ -873,8 +878,7 @@ ConPlatformUpdateDeviceVariable (
       return Status;\r
     }\r
     //\r
-    // The device path is not in variable. Append DevicePath to the\r
-    // environment variable that is a multi-instance device path.\r
+    // We reach here to append a device path that does not exist in variable.\r
     //\r
     Status = EFI_SUCCESS;\r
     NewVariableDevicePath = AppendDevicePathInstance (\r
@@ -887,15 +891,15 @@ ConPlatformUpdateDeviceVariable (
 \r
   } else {\r
     //\r
-    // Remove DevicePath from the environment variable that\r
+    // We reach here to remove DevicePath from the environment variable that\r
     // is a multi-instance device path.\r
     //\r
     Status = ConPlatformMatchDevicePaths (\r
-              VariableDevicePath,\r
-              DevicePath,\r
-              &NewVariableDevicePath,\r
-              TRUE\r
-              );\r
+               VariableDevicePath,\r
+               DevicePath,\r
+               &NewVariableDevicePath,\r
+               TRUE\r
+               );\r
   }\r
 \r
   if (VariableDevicePath != NULL) {\r
@@ -925,7 +929,7 @@ ConPlatformUpdateDeviceVariable (
 }\r
 \r
 /**\r
-  Check if the device is one hot-plug supported.\r
+  Check if the device supports hot-plug.\r
 \r
   @param  DriverBindingHandle   Protocol instance pointer.\r
   @param  ControllerHandle      Handle of device to check.\r