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