/** @file Common declarations and definitions. By dmazar, 26/09/2012 **/ #ifndef __DMP_COMMON_H__ #define __DMP_COMMON_H__ // // LOG_TO_SCREEN: // 1 - will enable log output to screen // 0 - will disable log output to screen // #define LOG_TO_SCREEN 0 // // LOG_TO_SERIAL: // 2 - will enable log output to serial, and allow sending console output to serial as well (when CAPTURE_CONSOLE_OUTPUT below is enabled) // 1 - will enable serial output, but prevent sending console output to serial // 0 - will disable log output to serial // // Options 1 and 2 differ only when CAPTURE_CONSOLE_OUTPUT is enabled: // Some UEFI implementations always send console output to serial (even when we send nothing), while others don't do it. // So, we may want to print console output to file, but prevent it from being printed to serial (on firmwares where it is already being printed there). // Or, we may want to print console output to both file and serial (on firmwares where it is not being printed there). // // LOG_TO_SERIAL=1/2 requires // Clover/DumpUefiCalls/DumpUefiCalls.inf { // // DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf // SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf // // gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x07 // gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0xFFFFFFFF // } // in package DSC file (Clover.dsc) // Alternatively, they can be defined directly in global [LibraryClasses] and [PcdsFixedAtBuild] of DSC file (as in DumpUefiCalls.dsc) // #ifdef DEBUG_ON_SERIAL_PORT #define LOG_TO_SERIAL 2 #else #define LOG_TO_SERIAL 0 #endif // // LOG_TO_FILE: // 4 - will enable file output with append while logging, reopening file with every write (this is how it was implemented before, not sure if needed) // 3 - will enable file output with append while logging, keeping file open, and flush after every write (good for debugging if it hangs) // 2 - will enable file output, appending to existing file (save is done only at the end) // 1 - will enable file output, overwriting old file (save is done only at the end) // 0 - will disable file output // Note: append while logging (options 3,4) works fine on CloverEFI, but varies between different UEFI firmwares, use only if needed for debugging. // #ifdef DEBUG_ON_SERIAL_PORT #define LOG_TO_FILE 0 #else #define LOG_TO_FILE 4 #endif // // LOG_TO_FILE_PATH // // Note: some firmwares don't support writing to long filenames, so it's better to keep names as 8.3. #ifdef CLOVER_BUILD #define LOG_TO_FILE_PATH L"\\EFI\\CLOVER\\misc\\EfiCalls.log" #else #define LOG_TO_FILE_PATH L"\\EFI\\EfiCalls.log" #endif // // PRINT calls our main logger. // // the following ensures that we don't end up calling print from another print, which was observed in some cases and could cause reboot/hang #define PRINT(...) LogPrint(__VA_ARGS__); // // WORK_DURING_RUNTIME: // 2 - will continue to print even after ExitBootServices() - using "new style" callback event // 1 - will continue to print even after ExitBootServices() - using "old style" callback event // usefull only when printing to serial in VBox for example // 0 - will stop printing when ExitBootServices() are called // #define WORK_DURING_RUNTIME 2 // // PRINT_DUMPS: // 2 - will print dumps for ST, RT, and DataHub vars when ExitBootServices() is called // 1 - will print dumps for ST, RT vars when ExitBootServices() is called // 0 - will skip printing dumps // #define PRINT_DUMPS 0 // // PRINT_SHELL_VARS: // 1 - will print shell vars in PrintRTVariables(), takes place only if above is enabled // 0 - will skip shell vars // #define PRINT_SHELL_VARS 0 // // PRINT_MEMORY_MAP: // 1 - will print memmap when GetMemoryMap() is called // 0 - will skip printing memmap // #define PRINT_MEMORY_MAP 0 // // PRINT_ALLOCATE_POOL: // 1 - will print AllocatePool() calls, note that there are a lot of them // 0 - will skip printing AllocatePool() calls. // #define PRINT_ALLOCATE_POOL 0 // // CAPTURE_FILESYSTEM_ACCESS 1 // 1 - will capture and display all file system access // 0 - will skip capturing file system access // #define CAPTURE_FILESYSTEM_ACCESS 1 // // CAPTURE_CONSOLE_OUTPUT // 2 - will capture conout, and prevent it from being displayed to screen (useful when saving to file where there is a lot of screen output) // 1 - will capture conout, allowing it to be displayed to screen also (useful when saving to file) // 0 - will skip capturing conout // #define CAPTURE_CONSOLE_OUTPUT 1 // // CLEANER_LOG // 1 - will prevent printing CalculateCrc32() and GetVariable("EfiTime",...), as they are called very often on some firmwares // 0 - will allow printing the above // #define CLEANER_LOG 1 // // BOOT_LOADERS // specify here as shown below (in a CHAR16* array) all boot loaders for which overrides will start // array must be terminated by NULL // #define BOOT_LOADERS { L"boot.efi", L"bootmgfw.efi", L"grub.efi", L"grubx64.efi", L"bootx64.efi", NULL } #include "Lib.h" #include "Log.h" #include "FileLib.h" #include "BootServices.h" #include "RuntimeServices.h" #include "DataHub.h" #include "Fs.h" #include "AppleProtocols.h" extern EFI_GUID mEfiSimplePointerProtocolGuid; #endif // __DMP_COMMON_H__