]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Driver.c
Scrubbed part of the code.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Dhcp4Dxe / Dhcp4Driver.c
index 360193ea4be8db37985eefcfa0f62a9607a3e9ae..c804172e109f627f7f81234052299ca95b2135b4 100644 (file)
@@ -31,19 +31,23 @@ EFI_DRIVER_BINDING_PROTOCOL gDhcp4DriverBinding = {
   NULL\r
 };\r
 \r
-EFI_SERVICE_BINDING_PROTOCOL mDhcp4ServiceBindingTemplete = {\r
+EFI_SERVICE_BINDING_PROTOCOL mDhcp4ServiceBindingTemplate = {\r
   Dhcp4ServiceBindingCreateChild,\r
   Dhcp4ServiceBindingDestroyChild\r
 };\r
 \r
 /**\r
+  This is the declaration of an EFI image entry point. This entry point is\r
+  the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including\r
+  both device drivers and bus drivers.\r
+  \r
   Entry point of the DHCP driver to install various protocols.\r
 \r
-  @param  ImageHandle            The image handle of the driver.\r
-  @param  SystemTable            The system table.\r
+  @param  ImageHandle           The firmware allocated handle for the UEFI image.\r
+  @param  SystemTable           A pointer to the EFI System Table.\r
 \r
-  @retval EFI_SUCCES             if the driver binding and component name protocols are successfully\r
-  @retval Others                 Failed to install the protocols.\r
+  @retval EFI_SUCCESS           The operation completed successfully.\r
+  @retval EFI_OUT_OF_RESOURCES  The request could not be completed due to a lack of resources.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -65,15 +69,21 @@ Dhcp4DriverEntryPoint (
 \r
 \r
 /**\r
-  Test to see if DHCP driver supports the 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
-\r
-  @retval EFI_SUCCES             This driver supports this device\r
-  @retval other                  This driver does not support this device\r
+  Test to see if this driver supports ControllerHandle. This service\r
+  is called by the EFI boot service ConnectController(). In\r
+  order to make drivers as small as possible, there are a few calling\r
+  restrictions for this service. ConnectController() must\r
+  follow these calling restrictions. If any other agent wishes to call\r
+  Supported() it must also follow these calling restrictions.\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
+\r
+  @retval EFI_SUCCESS         This driver supports this device\r
+  @retval EFI_ALREADY_STARTED This driver is already running on this device\r
+  @retval other               This driver does not support this device\r
 \r
 **/\r
 EFI_STATUS\r
@@ -144,12 +154,12 @@ DhcpConfigUdpIo (
 \r
 /**\r
   Destory the DHCP service. The Dhcp4 service may be partly initialized,\r
-  or partly destoried. If a resource is destoried, it is marked as so in\r
-  case the destory failed and being called again later.\r
+  or partly destroyed. If a resource is destroyed, it is marked as so in\r
+  case the destroy failed and being called again later.\r
 \r
   @param  DhcpSb                 The DHCP service instance to destory.\r
 \r
-  @retval EFI_SUCCESS            The DHCP service is successfully closed.\r
+  @retval EFI_SUCCESS            Always return success.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -187,6 +197,7 @@ Dhcp4CloseService (
 \r
   @retval EFI_OUT_OF_RESOURCES   Failed to allocate resource .\r
   @retval EFI_SUCCESS            The DHCP service instance is created.\r
+  @retval other                  Other error occurs.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -207,7 +218,6 @@ Dhcp4CreateService (
   }\r
 \r
   DhcpSb->Signature       = DHCP_SERVICE_SIGNATURE;\r
-  DhcpSb->ServiceBinding  = mDhcp4ServiceBindingTemplete;\r
   DhcpSb->ServiceState    = DHCP_UNCONFIGED;\r
   DhcpSb->InDestory       = FALSE;\r
   DhcpSb->Controller      = Controller;\r
@@ -215,7 +225,11 @@ Dhcp4CreateService (
   InitializeListHead (&DhcpSb->Children);\r
   DhcpSb->DhcpState       = Dhcp4Stopped;\r
   DhcpSb->Xid             = NET_RANDOM (NetRandomInitSeed ());\r
-\r
+  CopyMem (\r
+    &DhcpSb->ServiceBinding,\r
+    &mDhcp4ServiceBindingTemplate,\r
+    sizeof (EFI_SERVICE_BINDING_PROTOCOL)\r
+    );\r
   //\r
   // Create various resources, UdpIo, Timer, and get Mac address\r
   //\r
@@ -254,16 +268,21 @@ ON_ERROR:
 \r
 \r
 /**\r
-  Start this driver on ControllerHandle.\r
-\r
-  @param  This                   Protocol instance pointer.\r
-  @param  ControllerHandle       Handle of device to bind driver to\r
-  @param  RemainingDevicePath    Optional parameter use to pick a specific child\r
-                                 device to start.\r
-\r
-  @retval EFI_SUCCES             This driver is added to ControllerHandle\r
-  @retval EFI_ALREADY_STARTED    This driver is already running on ControllerHandle\r
-  @retval other                  This driver does not support this device\r
+  Start this driver on ControllerHandle. This service is called by the\r
+  EFI boot service ConnectController(). In order to make\r
+  drivers as small as possible, there are a few calling restrictions for\r
+  this service. ConnectController() must follow these\r
+  calling restrictions. If any other agent wishes to call Start() it\r
+  must also follow these calling restrictions.\r
+\r
+  @param  This                 Protocol instance pointer.\r
+  @param  ControllerHandle     Handle of device to bind driver to\r
+  @param  RemainingDevicePath  Optional parameter use to pick a specific child\r
+                               device to start.\r
+\r
+  @retval EFI_SUCCESS          This driver is added to ControllerHandle\r
+  @retval EFI_ALREADY_STARTED  This driver is already running on ControllerHandle\r
+  @retval other                This driver does not support this device\r
 \r
 **/\r
 EFI_STATUS\r
@@ -329,16 +348,21 @@ ON_ERROR:
 \r
 \r
 /**\r
-  Stop this driver on ControllerHandle.\r
-\r
-  @param  This                   Protocol instance pointer.\r
-  @param  ControllerHandle       Handle of device to stop driver on\r
-  @param  NumberOfChildren       Number of Handles in ChildHandleBuffer. If number\r
-                                 of  children is zero stop the entire bus driver.\r
-  @param  ChildHandleBuffer      List of Child Handles to Stop.\r
-\r
-  @retval EFI_SUCCES             This driver is removed ControllerHandle\r
-  @retval other                  This driver was not removed from this device\r
+  Stop this driver on ControllerHandle. This service is called by the\r
+  EFI boot service DisconnectController(). In order to\r
+  make drivers as small as possible, there are a few calling\r
+  restrictions for this service. DisconnectController()\r
+  must follow these calling restrictions. If any other agent wishes\r
+  to call Stop() it must also follow these calling restrictions.\r
+  \r
+  @param  This              Protocol instance pointer.\r
+  @param  ControllerHandle  Handle of device to stop driver on\r
+  @param  NumberOfChildren  Number of Handles in ChildHandleBuffer. If number of\r
+                            children is zero stop the entire bus driver.\r
+  @param  ChildHandleBuffer List of Child Handles to Stop.\r
+\r
+  @retval EFI_SUCCESS       This driver is removed ControllerHandle\r
+  @retval other             This driver was not removed from this device\r
 \r
 **/\r
 EFI_STATUS\r
@@ -424,7 +448,7 @@ Dhcp4DriverBindingStop (
 \r
 \r
 /**\r
-  Initialize a new DHCP child.\r
+  Initialize a new DHCP instance.\r
 \r
   @param  DhcpSb                 The dhcp service instance\r
   @param  Instance               The dhcp instance to initialize\r
@@ -434,8 +458,8 @@ Dhcp4DriverBindingStop (
 **/\r
 VOID\r
 DhcpInitProtocol (\r
-  IN DHCP_SERVICE           *DhcpSb,\r
-  IN DHCP_PROTOCOL          *Instance\r
+  IN     DHCP_SERVICE           *DhcpSb,\r
+  IN OUT DHCP_PROTOCOL          *Instance\r
   )\r
 {\r
   Instance->Signature         = DHCP_PROTOCOL_SIGNATURE;\r
@@ -453,18 +477,18 @@ DhcpInitProtocol (
 \r
 \r
 /**\r
-  Creates a child handle with a set of DHCP4 services.\r
+  Creates a child handle with a set of I/O services.\r
 \r
-  @param  This                   Protocol instance pointer.\r
-  @param  ChildHandle            Pointer to the handle of the child to create.  If\r
-                                 it  is NULL, then a new handle is created.  If it\r
-                                 is not  NULL, then the DHCP4 services are added to\r
-                                 the existing  child handle.\r
+  @param  This        Protocol instance pointer.\r
+  @param  ChildHandle Pointer to the handle of the child to create.  If it is NULL,\r
+                      then a new handle is created.  If it is not NULL, then the\r
+                      I/O services are added to the existing child handle.\r
 \r
-  @retval EFI_SUCCES             The child handle was created with the DHCP4\r
-                                 services\r
-  @retval EFI_OUT_OF_RESOURCES   There are not enough resources to create the child\r
-  @retval other                  The child handle was not created\r
+  @retval EFI_SUCCES            The child handle was created with the I/O services\r
+  @retval EFI_INVALID_PARAMETER ChildHandle is NULL.\r
+  @retval EFI_OUT_OF_RESOURCES  There are not enough resources availabe to create\r
+                                the child\r
+  @retval other                 The child handle was not created\r
 \r
 **/\r
 EFI_STATUS\r
@@ -545,18 +569,18 @@ Dhcp4ServiceBindingCreateChild (
 \r
 \r
 /**\r
-  Destroys a child handle with a set of DHCP4 services.\r
+  Destroys a child handle with a set of I/O services.\r
 \r
-  @param  This                   Protocol instance pointer.\r
-  @param  ChildHandle            Handle of the child to destroy\r
+  @param  This        Protocol instance pointer.\r
+  @param  ChildHandle Handle of the child to destroy\r
 \r
-  @retval EFI_SUCCES             The DHCP4 service is removed from the child handle\r
-  @retval EFI_UNSUPPORTED        The child handle does not support the DHCP4\r
-                                 service\r
-  @retval EFI_INVALID_PARAMETER  Child handle is not a valid EFI Handle.\r
-  @retval EFI_ACCESS_DENIED      The child handle could not be destroyed because\r
-                                 its  DHCP4 services are being used.\r
-  @retval other                  The child handle was not destroyed\r
+  @retval EFI_SUCCES            The I/O services were removed from the child handle\r
+  @retval EFI_UNSUPPORTED       The child handle does not support the I/O services\r
+                                that are being removed.\r
+  @retval EFI_INVALID_PARAMETER Child handle is not a valid EFI Handle.\r
+  @retval EFI_ACCESS_DENIED     The child handle could not be destroyed because its\r
+                                I/O services are being used.\r
+  @retval other                 The child handle was not destroyed\r
 \r
 **/\r
 EFI_STATUS\r
@@ -600,8 +624,8 @@ Dhcp4ServiceBindingDestroyChild (
   }\r
 \r
   //\r
-  // A child can be destoried more than once. For example,\r
-  // Dhcp4DriverBindingStop will destory all of its children.\r
+  // A child can be destroyed more than once. For example,\r
+  // Dhcp4DriverBindingStop will destroy all of its children.\r
   // when caller driver is being stopped, it will destory the\r
   // dhcp child it opens.\r
   //\r