22#include <Library/DebugLib.h>
23#include <Library/PrintLib.h>
24#include <Library/UefiBootServicesTableLib.h>
25#include <Library/UefiLib.h>
32#if !defined(HAVE_UBSAN_SUPPORT) && defined(__clang__)
33#define HAVE_UBSAN_SUPPORT 1
38#ifndef __HAVE_LONG_DOUBLE
39#define __HAVE_LONG_DOUBLE
48#define __KERNEL_RCSID(x, s) __RCSID(s)
58#define uint16_t UINT16
59#define uint32_t UINT32
60#define uint64_t UINT64
63#define uintptr_t UINTN
67#if defined(__GNUC__) || defined(__clang__)
68#if defined(MDE_CPU_X64) || defined(MDE_CPU_IA32)
72#define __SSIZE_TYPE__ \
73 __typeof__(_Generic((__SIZE_TYPE__)0, \
74 unsigned long long int : (long long int)0, \
75 unsigned long int : (long int)0, \
76 unsigned int : (int)0, \
77 unsigned short : (short)0, \
78 unsigned char : (signed char)0))
83#error Unknown CPU arch
97#define va_list VA_LIST
98#define va_start VA_START
113#define UINT8_MAX 0xffU
114#define UINT16_MAX 0xffffU
115#define UINT32_MAX 0xffffffffU
116#define UINT64_MAX 0xffffffffffffffffULL
125#if !defined(MDEPKG_NDEBUG)
126 #define KASSERT(Expression) \
128 if (DebugAssertEnabled ()) { \
129 if (!(Expression)) { \
130 _ASSERT (Expression); \
131 ANALYZER_UNREACHABLE (); \
136 #define KASSERT(Expression)
152 (((UINTN)(__n) >= CHAR_BIT * sizeof(UINTN)) ? 0 : \
153 ((UINTN)1 << (UINTN)((__n) & (CHAR_BIT * sizeof(UINTN) - 1))))
157#ifndef __LOWEST_SET_BIT
159#define __LOWEST_SET_BIT(__mask) ((((__mask) - 1) & (__mask)) ^ (__mask))
160#define __SHIFTOUT(__x, __mask) (((__x) & (__mask)) / __LOWEST_SET_BIT(__mask))
161#define __SHIFTIN(__x, __mask) ((__x) * __LOWEST_SET_BIT(__mask))
162#define __SHIFTOUT_MASK(__mask) __SHIFTOUT((__mask), (__mask))
167#define SET(t, f) ((t) |= (f))
168#define ISSET(t, f) ((t) & (f))
169#define CLR(t, f) ((t) &= ~(f))
174#if defined(__GNUC__) || defined(__clang__)
175#define __printflike(x, y) __attribute__((format(printf, (x), (y))))
177#define __printflike(x, y)
183#define __arraycount(a) ARRAY_SIZE (a)
188#if defined(__GNUC__) || defined(__clang__)
189#define __unreachable() __builtin_unreachable()
191#define __unreachable()
196#define TINYPRINTF_DEFINE_TFP_SPRINTF 1
197typedef void (*
putcf) (
void *, char);
205#define snprintf tfp_snprintf
206#define vprintf(f, v) \
207 do { CHAR8 Tmp__[1024]; tfp_vsnprintf (Tmp__, sizeof (Tmp__), f, v); AsciiPrint ("%a", Tmp__); } while (0)
208#define vpanic(f, v) \
209 do { vprintf (f, v); do { } while (1); } while (0)
212#define memcpy(Dst, Src, Size) do { gBS->CopyMem(Dst, Src, Size); } while (0)
215#define strlcpy(Dst, Src, Size) do { AsciiStrnCpyS (Dst, Size, Src, AsciiStrLen (Src)); } while (0)
216#define strlcat(Dst, Src, Size) do { AsciiStrnCatS (Dst, Size, Src, AsciiStrLen (Src)); } while (0)
int tfp_vsnprintf(char *str, size_t size, const char *fmt, va_list ap)
int EFIAPI tfp_sprintf(char *str, const char *fmt,...) __printflike(2
#define __printflike(x, y)
int EFIAPI int EFIAPI tfp_vsprintf(char *str, const char *fmt, va_list ap)
void EFIAPI tfp_format(void *putp, putcf putf, const char *fmt, va_list va)
void(* putcf)(void *, char)
int EFIAPI tfp_snprintf(char *str, size_t size, const char *fmt,...) __printflike(3