/** @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; | |
} |