Newer
Older
AMI-Aptio-BIOS-Reversed / DpcDxe / DpcDxe.h
@Ajax Dong Ajax Dong 2 days ago 5 KB Init
/** @file
  DpcDxe.h -- Header for DpcDxe

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __DPCDXE_H__
#define __DPCDXE_H__

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

//
// Function Prototypes
//

EFI_STATUS
EFIAPI
DpcInternalIsListValid(
  VOID
);

EFI_STATUS
EFIAPI
DpcInternalIsListEmpty(
  VOID
);

EFI_STATUS
EFIAPI
DpcGetDebugOutputProtocol(
  VOID
);

EFI_STATUS
EFIAPI
DpcDebugAssert(
  VOID
);

EFI_STATUS
EFIAPI
DpcReportAssertError(
  VOID
);

EFI_STATUS
EFIAPI
DpcReadUnaligned64(
  VOID
);

EFI_STATUS
EFIAPI
DpcCompareGuid(
  VOID
);

EFI_STATUS
EFIAPI
DpcHobInit(
  VOID
);

EFI_STATUS
EFIAPI
DpcQueueDpc(
  VOID
);

EFI_STATUS
EFIAPI
DpcDispatchDpc(
  VOID
);

EFI_STATUS
EFIAPI
DpcDriverEntry(
  VOID
);

EFI_STATUS
EFIAPI
ModuleEntryPoint(
  VOID
);

EFI_STATUS
EFIAPI
data(
  VOID
);

/// EFI_DPC_PROTOCOL
EFI_STATUS
EFIAPI
interface instance(
  VOID
);

EFI_STATUS
EFIAPI
gDpcProtocolInterface;(
  VOID
);

EFI_STATUS
EFIAPI
of the free DPC_ENTRY pool (at 0x1140)(
  VOID
);

EFI_STATUS
EFIAPI
gDpcFreeListHead;(
  VOID
);

/// one LIST_ENTRY per priority level (0..31)
EFI_STATUS
EFIAPI
queue heads(
  VOID
);

EFI_STATUS
EFIAPI
at 0x11C0 .. 0x13AF (32 entries * 16 bytes each)(
  VOID
);

EFI_STATUS
EFIAPI
gDpcQueue[DPC_NUM_QUEUES];(
  VOID
);

EFI_STATUS
EFIAPI
(at 0x1160, 0x1170)(
  VOID
);

EFI_STATUS
EFIAPI
gDpcQueueDepth     = 0;(
  VOID
);

EFI_STATUS
EFIAPI
registration handle (at 0x1168)(
  VOID
);

EFI_STATUS
EFIAPI
gDpcProtocolHandle = NULL;(
  VOID
);

EFI_STATUS
EFIAPI
output protocol (at 0x1198)(
  VOID
);

EFI_STATUS
EFIAPI
*gDpcDebugProtocol = NULL;(
  VOID
);

EFI_STATUS
EFIAPI
list pointer (at 0x11A0)(
  VOID
);

EFI_STATUS
EFIAPI
*gDpcHobList = NULL;(
  VOID
);

EFI_STATUS
EFIAPI
management(
  VOID
);

EFI_STATUS
EFIAPI
output support(
  VOID
);

/// check error reporting level.
EFI_STATUS
EFIAPI
CMOS status(
  VOID
);

EFI_STATUS
EFIAPI
0x70 index, port 0x71 data.(
  VOID
);

EFI_STATUS
EFIAPI
= __inbyte (0x70);(
  VOID
);

EFI_STATUS
EFIAPI
CMOS value to EFI error severity.(
  VOID
);

EFI_STATUS
EFIAPI
(CmosValue == 1) {(
  VOID
);

EFI_STATUS
EFIAPI
} else {(
  VOID
);

EFI_STATUS
EFIAPI
}(
  VOID
);

EFI_STATUS
EFIAPI
comparison and HOB list initialization(
  VOID
);

EFI_STATUS
EFIAPI
DpcToken (must be in range 4..0x1F).(
  VOID
);

EFI_STATUS
EFIAPI
((DpcToken < 4) || (DpcToken > 0x1F)) {(
  VOID
);

EFI_STATUS
EFIAPI
TPL to serialize access to the DPC free list and queues.(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->RaiseTPL (TPL_DPC_PROCESSING);(
  VOID
);

EFI_STATUS
EFIAPI
if the free list has an entry.(
  VOID
);

EFI_STATUS
EFIAPI
(DpcInternalIsListEmpty (&gDpcFreeListHead)) {(
  VOID
);

/// try to allocate more entries.
EFI_STATUS
EFIAPI
list is empty(
  VOID
);

EFI_STATUS
EFIAPI
(Tpl <= 16) {(
  VOID
);

EFI_STATUS
EFIAPI
is high but still low enough for AllocatePool.(
  VOID
);

EFI_STATUS
EFIAPI
up to DPC_ALLOCATE_BATCH (64) times, dropping and(
  VOID
);

EFI_STATUS
EFIAPI
TPL each iteration.(
  VOID
);

EFI_STATUS
EFIAPI
(RetryCount = 0; RetryCount < DPC_ALLOCATE_BATCH; RetryCount++) {(
  VOID
);

EFI_STATUS
EFIAPI
TPL so AllocatePool can work.(
  VOID
);

EFI_STATUS
EFIAPI
a new DPC entry.(
  VOID
);

EFI_STATUS
EFIAPI
= DpcAllocatePool ();(
  VOID
);

EFI_STATUS
EFIAPI
TPL back.(
  VOID
);

EFI_STATUS
EFIAPI
again if free list is still empty (another thread(
  VOID
);

EFI_STATUS
EFIAPI
have freed entries while TPL was lowered).(
  VOID
);

/// add this entry to it.
EFI_STATUS
EFIAPI
list is still empty(
  VOID
);

EFI_STATUS
EFIAPI
(&gDpcFreeListHead, &Entry->List);(
  VOID
);

EFI_STATUS
EFIAPI
the loop, check if we now have an entry.(
  VOID
);

EFI_STATUS
EFIAPI
is too high for pool allocation.(
  VOID
);

EFI_STATUS
EFIAPI
= EFI_OUT_OF_RESOURCES;(
  VOID
);

EFI_STATUS
EFIAPI
an entry from the free list.(
  VOID
);

EFI_STATUS
EFIAPI
= BASE_CR (gDpcFreeListHead.ForwardLink, DPC_ENTRY, List);(
  VOID
);

EFI_STATUS
EFIAPI
the DPC entry.(
  VOID
);

EFI_STATUS
EFIAPI
to the correct priority-level list.(
  VOID
);

EFI_STATUS
EFIAPI
(&gDpcQueue[DpcToken], &Entry->List);(
  VOID
);

EFI_STATUS
EFIAPI
statistics.(
  VOID
);

EFI_STATUS
EFIAPI
TPL to DPC_PROCESSING to serialize.(
  VOID
);

EFI_STATUS
EFIAPI
priorities from the raised TPL (31) downwards.(
  VOID
);

EFI_STATUS
EFIAPI
(Priority <= 31) {(
  VOID
);

EFI_STATUS
EFIAPI
this priority queue has entries, drain it.(
  VOID
);

EFI_STATUS
EFIAPI
(!DpcInternalIsListEmpty (&gDpcQueue[Priority])) {(
  VOID
);

EFI_STATUS
EFIAPI
the first entry from the queue.(
  VOID
);

EFI_STATUS
EFIAPI
= BASE_CR (gDpcQueue[Priority].ForwardLink(
  VOID
);

EFI_STATUS
EFIAPI
the queue depth counter.(
  VOID
);

EFI_STATUS
EFIAPI
TPL to the priority level so the callback(
  VOID
);

EFI_STATUS
EFIAPI
execute at its intended TPL.(
  VOID
);

EFI_STATUS
EFIAPI
the deferred procedure.(
  VOID
);

EFI_STATUS
EFIAPI
TPL back, and return the entry to the free list.(
  VOID
);

EFI_STATUS
EFIAPI
to the next lower priority level.(
  VOID
);

EFI_STATUS
EFIAPI
(Priority == 0) {(
  VOID
);

EFI_STATUS
EFIAPI
initialization(
  VOID
);

EFI_STATUS
EFIAPI
if DPC protocol is already installed.(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->LocateProtocol ((
  VOID
);

/// this is a bug in the calling driver.
EFI_STATUS
EFIAPI
already registered(
  VOID
);

EFI_STATUS
EFIAPI
((
  VOID
);

EFI_STATUS
EFIAPI
all 32 DPC queue heads.(
  VOID
);

EFI_STATUS
EFIAPI
(QueueIndex = 0; QueueIndex < DPC_NUM_QUEUES; QueueIndex++) {(
  VOID
);

EFI_STATUS
EFIAPI
the DPC protocol.(
  VOID
);

EFI_STATUS
EFIAPI
= gBS->InstallProtocolInterface ((
  VOID
);

EFI_STATUS
EFIAPI
UEFI globals.(
  VOID
);

EFI_STATUS
EFIAPI
= ImageHandle;(
  VOID
);

EFI_STATUS
EFIAPI
HOB list for DXE phase services.(
  VOID
);

EFI_STATUS
EFIAPI
();(
  VOID
);

EFI_STATUS
EFIAPI
DpcDriverEntry (ImageHandle, SystemTable);(
  VOID
);

#endif /* __DPCDXE_H__ */