/** @file
  SmmGenericSio.h -- Header for SmmGenericSio

  Source: DEBUG_VS2015\X64\AmiModulePkg\GenericSio\SmmGenericSio\DEBUG
  Build: HR6N0XMLK DEBUG_VS2015 X64

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __SMMGENERICSIO_H__
#define __SMMGENERICSIO_H__

#include "../uefi_headers/Uefi.h"

//
// Function Prototypes
//

///
/// ModuleEntryPoint -- UEFI entry point / initialization function
///
EFI_STATUS
EFIAPI
ModuleEntryPoint(
  IN EFI_HANDLE       ImageHandle,
  IN EFI_SYSTEM_TABLE *SystemTable
);

///
/// SmmGenericSioAutoGenConstructor -- AutoGen library constructor.
///
EFI_STATUS
EFIAPI
SmmGenericSioAutoGenConstructor(
  VOID
);

///
/// SmmGenericSioInitialize -- Core SMM Generic SIO initialization.
///
EFI_STATUS
EFIAPI
SmmGenericSioInitialize(
  IN EFI_HANDLE       ImageHandle,
  IN EFI_SYSTEM_TABLE *SystemTable
);

///
/// SmmGenericSioAutoGenDestructor -- Auto-generated library cleanup hook.
///
EFI_STATUS
EFIAPI
SmmGenericSioAutoGenDestructor(
  IN VOID *Context
);

///
/// SmmGenericSioUnload -- Manual unload handler.
///
EFI_STATUS
EFIAPI
SmmGenericSioUnload(
  IN VOID *Context,
  IN UINTN  Phase
);

///
/// SmmGenericSioDebugAssert -- Debug assert handler from AutoGen.
///
EFI_STATUS
EFIAPI
SmmGenericSioDebugAssert(
  IN CONST CHAR8 *FileName,
  IN UINTN       LineNumber,
  IN CONST CHAR8 *Expression
);

///
/// SmmGenericSioInitHook -- Initialization hook used before main SIO setup.
///
EFI_STATUS
EFIAPI
SmmGenericSioInitHook(
  IN VOID *Context
);

///
/// SmmGenericSioHandleInitializeError -- Error path handler when init fails.
///
EFI_STATUS
EFIAPI
SmmGenericSioHandleInitializeError(
  VOID
);

#endif /* __SMMGENERICSIO_H__ */
