MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / MemLogPrint

Function MemLogPrint

Protocols/DumpUefiCalls/MemLog.c:26–69  ·  view source on GitHub ↗

Prints log messages to memory buffer. */

Source from the content-addressed store, hash-verified

24
25/** Prints log messages to memory buffer. */
26EFI_STATUS EFIAPI
27MemLogPrint(IN MEM_LOG *MemLog, IN CHAR8 *Format, ...)
28{
29 EFI_STATUS Status = EFI_SUCCESS;
30 VA_LIST Marker;
31 UINTN DataWritten;
32
33 if (MemLog->Buffer == NULL) {
34 // init log buffer
35 MemLog->BufferSize = MEM_LOG_INITIAL_SIZE;
36 MemLog->Buffer = AllocateZeroPool(MemLog->BufferSize);
37 MemLog->Size = 0;
38 }
39
40 if (MemLog->Size + MEM_LOG_MAX_LINE_SIZE > MemLog->BufferSize) {
41 // not enough place for max line - make buffer bigger
42 // but not too big (if something gets out of controll)
43 if (MemLog->BufferSize * 2 > MEM_LOG_MAX_SIZE) {
44 return EFI_OUT_OF_RESOURCES;
45 }
46 MemLog->Buffer = ReallocatePool(MemLog->BufferSize, MemLog->BufferSize * 2, MemLog->Buffer);
47 MemLog->BufferSize *= 2;
48 }
49
50 // add log to buffer
51 VA_START (Marker, Format);
52 DataWritten = AsciiVSPrint(
53 MemLog->Buffer + MemLog->Size,
54 MemLog->BufferSize - MemLog->Size,
55 Format,
56 Marker);
57 VA_END (Marker);
58 MemLog->Size += DataWritten;
59
60 #if LOG_TO_FILE >= 3
61 // append to file while logging (at end of line)
62 if (DataWritten >= 1 && *(MemLog->Buffer + MemLog->Size - 1) == '\n') {
63 Status = FsAppendMemToFileToDefaultDir(LOG_TO_FILE_PATH, (VOID*)MemLog->Buffer, MemLog->Size);
64 MemLog->Size = 0;
65 }
66 #endif
67
68 return Status;
69}
70
71
72/** Saves log to Log.txt in the same dir as driver. */

Callers 1

LogPrintFunction · 0.85

Calls 4

AllocateZeroPoolFunction · 0.50
ReallocatePoolFunction · 0.50
AsciiVSPrintFunction · 0.50

Tested by

no test coverage detected