audk/StdLib/EfiSocketLib/Init.c

112 lines
2.7 KiB
C

/** @file
Implement the constructor and destructor for the EFI socket library
Copyright (c) 2011, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#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;
}