| /** @file | |
| Implement the constructor and destructor for the EFI socket library | |
| Copyright (c) 2011, 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. | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| #include "Socket.h" | |
| /** | |
| EFI Socket Library Constructor | |
| This routine supports an implementation dependent constructor | |
| depending upon whether the library is linked to a socket | |
| application or the SocketDxe driver. The following modules | |
| declare the redirection for the constructor in ::mpfnEslConstructor: | |
| <ul> | |
| <li>StdLib/EfiSocketLib/UseSocketLib.c - Application links against EfiSocketLib</li> | |
| <li>StdLib/SocketDxe/EntryUnload.c - SocketDxe links against EfiSocketLib</li> | |
| </ul> | |
| The EfiSocketLib.inf file lists ::EslConstructor as the CONSTRUCTOR | |
| in the [Defines] section. As a result, this routine is called by | |
| the ProcessLibraryConstructorList routine of the AutoGen.c module | |
| in the Build directory associated with the socket application or | |
| the SocketDxe driver. | |
| @retval EFI_SUCCESS The socket layer initialization was successful | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| EslConstructor ( | |
| VOID | |
| ) | |
| { | |
| EFI_STATUS Status; | |
| DBG_ENTER ( ); | |
| // | |
| // Assume success | |
| // | |
| Status = EFI_SUCCESS; | |
| // | |
| // Call the image dependent constructor if available | |
| // | |
| if ( NULL != mpfnEslConstructor ) { | |
| Status = mpfnEslConstructor ( ); | |
| } | |
| // | |
| // Return the constructor status | |
| // | |
| DBG_EXIT_STATUS ( Status ); | |
| return Status; | |
| } | |
| /** | |
| EFI Socket Library Destructor | |
| This routine supports an implementation dependent destructor | |
| depending upon whether the library is linked to a socket | |
| application or the SocketDxe driver. The following modules | |
| declare the redirection for the destructor in ::mpfnEslDestructor: | |
| <ul> | |
| <li>StdLib/EfiSocketLib/UseSocketLib.c - Application links against EfiSocketLib</li> | |
| <li>StdLib/SocketDxe/EntryUnload.c - SocketDxe links against EfiSocketLib</li> | |
| </ul> | |
| The EfiSocketLib.inf file lists ::EslDestructor as the DESTRUCTOR | |
| in the [Defines] section. As a result, this routine is called by | |
| the ProcessLibraryDestructorList routine of the AutoGen.c module | |
| in the Build directory associated with the socket application or | |
| the SocketDxe driver. | |
| @retval EFI_SUCCESS The socket layer shutdown was successful | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| EslDestructor ( | |
| VOID | |
| ) | |
| { | |
| EFI_STATUS Status; | |
| DBG_ENTER ( ); | |
| // | |
| // Assume success | |
| // | |
| Status = EFI_SUCCESS; | |
| // | |
| // Call the image dependent destructor if available | |
| // | |
| if ( NULL != mpfnEslDestructor ) { | |
| Status = mpfnEslDestructor ( ); | |
| } | |
| // | |
| // Return the constructor status | |
| // | |
| DBG_EXIT_STATUS ( Status ); | |
| return Status; | |
| } |