81 lines
1.3 KiB
C++
81 lines
1.3 KiB
C++
#ifndef __EFI_MISC_STUFF__
|
|
#define __EFI_MISC_STUFF__
|
|
|
|
/*++
|
|
|
|
Copyright (c) 1999 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
efimisc.hxx
|
|
|
|
Abstract:
|
|
|
|
a couple things to make our lives easier
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
extern "C" {
|
|
#include <efi.h>
|
|
#include <efilib.h>
|
|
}
|
|
|
|
// a couple things to make our lives easier
|
|
|
|
// BUGBUG
|
|
// There doesn't seem to be any interlockedexchange compexchg or interlocked decrement/increment.
|
|
// so we define some here that work.
|
|
//
|
|
// Note that these won't work since they aren't really atomic, but my assumption is that
|
|
// EFI is a single threaded environment so this won't really matter.
|
|
|
|
LONG
|
|
InterlockedIncrement (
|
|
IN OUT LONG* Addend
|
|
);
|
|
|
|
LONG
|
|
InterlockedDecrement (
|
|
IN OUT LONG* Addend
|
|
);
|
|
|
|
LONG
|
|
InterlockedExchange (
|
|
IN OUT LONG* Target,
|
|
LONG Value
|
|
);
|
|
|
|
LONG
|
|
InterlockedCompareExchange (
|
|
IN OUT LONG* Destination,
|
|
IN LONG ExChange,
|
|
IN LONG Comperand
|
|
);
|
|
|
|
NTSTATUS
|
|
NtDelayExecution (
|
|
IN BOOLEAN Alertable,
|
|
IN PLARGE_INTEGER DelayInterval
|
|
);
|
|
|
|
// this is in qsort.c in efisrc.
|
|
void __cdecl qsort (
|
|
void *base,
|
|
unsigned num,
|
|
unsigned width,
|
|
int (__cdecl *comp)(const void *, const void *)
|
|
);
|
|
|
|
void
|
|
_chkstk();
|
|
|
|
void
|
|
_aNchkstk();
|
|
|
|
VOID
|
|
EfiWaitForKey();
|
|
|
|
#endif //__EFI_MISC_STUFF__
|