audk/StdLib/EfiSocketLib/Init.c

118 lines
3.1 KiB
C
Raw Normal View History

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