mirror of
https://github.com/Fennix-Project/Kernel.git
synced 2025-05-27 23:14:38 +00:00
Spinlocked uart
This commit is contained in:
parent
858a67c047
commit
c5e3809674
@ -63,7 +63,27 @@ namespace SysDbg
|
|||||||
|
|
||||||
__no_instrument_function void WriteLine(DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...)
|
__no_instrument_function void WriteLine(DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...)
|
||||||
{
|
{
|
||||||
// SmartLock(DebuggerLock);
|
WritePrefix(Level, File, Line, Function);
|
||||||
|
va_list args;
|
||||||
|
va_start(args, Format);
|
||||||
|
vfctprintf(uart_wrapper, nullptr, Format, args);
|
||||||
|
va_end(args);
|
||||||
|
uart_wrapper('\n', nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
__no_instrument_function void LockedWrite(DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...)
|
||||||
|
{
|
||||||
|
SmartTimeoutLock(DebuggerLock, 1000);
|
||||||
|
WritePrefix(Level, File, Line, Function);
|
||||||
|
va_list args;
|
||||||
|
va_start(args, Format);
|
||||||
|
vfctprintf(uart_wrapper, nullptr, Format, args);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
__no_instrument_function void LockedWriteLine(DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...)
|
||||||
|
{
|
||||||
|
SmartTimeoutLock(DebuggerLock, 1000);
|
||||||
WritePrefix(Level, File, Line, Function);
|
WritePrefix(Level, File, Line, Function);
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, Format);
|
va_start(args, Format);
|
||||||
@ -93,3 +113,26 @@ extern "C" __no_instrument_function void SysDbgWriteLine(enum DebugLevel Level,
|
|||||||
va_end(args);
|
va_end(args);
|
||||||
uart_wrapper('\n', nullptr);
|
uart_wrapper('\n', nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// C compatibility
|
||||||
|
extern "C" __no_instrument_function void SysDbgLockedWrite(enum DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...)
|
||||||
|
{
|
||||||
|
SmartTimeoutLock(DebuggerLock, 1000);
|
||||||
|
WritePrefix(Level, File, Line, Function);
|
||||||
|
va_list args;
|
||||||
|
va_start(args, Format);
|
||||||
|
vfctprintf(uart_wrapper, nullptr, Format, args);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
// C compatibility
|
||||||
|
extern "C" __no_instrument_function void SysDbgLockedWriteLine(enum DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...)
|
||||||
|
{
|
||||||
|
SmartTimeoutLock(DebuggerLock, 1000);
|
||||||
|
WritePrefix(Level, File, Line, Function);
|
||||||
|
va_list args;
|
||||||
|
va_start(args, Format);
|
||||||
|
vfctprintf(uart_wrapper, nullptr, Format, args);
|
||||||
|
va_end(args);
|
||||||
|
uart_wrapper('\n', nullptr);
|
||||||
|
}
|
||||||
|
@ -21,6 +21,8 @@ namespace SysDbg
|
|||||||
{
|
{
|
||||||
void Write(DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...);
|
void Write(DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...);
|
||||||
void WriteLine(DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...);
|
void WriteLine(DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...);
|
||||||
|
void LockedWrite(DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...);
|
||||||
|
void LockedWriteLine(DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define error(Format, ...) SysDbg::WriteLine(DebugLevelError, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
#define error(Format, ...) SysDbg::WriteLine(DebugLevelError, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
@ -36,10 +38,25 @@ namespace SysDbg
|
|||||||
#define trace(Format, ...) SysDbg::WriteLine(DebugLevelTrace, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
#define trace(Format, ...) SysDbg::WriteLine(DebugLevelTrace, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
#define fixme(Format, ...) SysDbg::WriteLine(DebugLevelFixme, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
#define fixme(Format, ...) SysDbg::WriteLine(DebugLevelFixme, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
#define locked_error(Format, ...) SysDbg::LockedWriteLine(DebugLevelError, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
#define locked_warn(Format, ...) SysDbg::LockedWriteLine(DebugLevelWarning, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
#define locked_info(Format, ...) SysDbg::LockedWriteLine(DebugLevelInfo, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define locked_debug(Format, ...) SysDbg::LockedWriteLine(DebugLevelDebug, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
#define locked_ubsan(Format, ...) SysDbg::LockedWriteLine(DebugLevelUbsan, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define locked_debug(Format, ...)
|
||||||
|
#define locked_ubsan(Format, ...)
|
||||||
|
#endif
|
||||||
|
#define locked_trace(Format, ...) SysDbg::LockedWriteLine(DebugLevelTrace, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
#define locked_fixme(Format, ...) SysDbg::LockedWriteLine(DebugLevelFixme, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
void SysDbgWrite(enum DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...);
|
void SysDbgWrite(enum DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...);
|
||||||
void SysDbgWriteLine(enum DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...);
|
void SysDbgWriteLine(enum DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...);
|
||||||
|
void SysDbgLockedWrite(enum DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...);
|
||||||
|
void SysDbgLockedWriteLine(enum DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...);
|
||||||
|
|
||||||
#define error(Format, ...) SysDbgWriteLine(DebugLevelError, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
#define error(Format, ...) SysDbgWriteLine(DebugLevelError, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
#define warn(Format, ...) SysDbgWriteLine(DebugLevelWarning, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
#define warn(Format, ...) SysDbgWriteLine(DebugLevelWarning, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
@ -54,6 +71,19 @@ void SysDbgWriteLine(enum DebugLevel Level, const char *File, int Line, const ch
|
|||||||
#define trace(Format, ...) SysDbgWriteLine(DebugLevelTrace, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
#define trace(Format, ...) SysDbgWriteLine(DebugLevelTrace, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
#define fixme(Format, ...) SysDbgWriteLine(DebugLevelFixme, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
#define fixme(Format, ...) SysDbgWriteLine(DebugLevelFixme, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
#define locked_error(Format, ...) SysDbgLockedWriteLine(DebugLevelError, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
#define locked_warn(Format, ...) SysDbgLockedWriteLine(DebugLevelWarning, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
#define locked_info(Format, ...) SysDbgLockedWriteLine(DebugLevelInfo, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define locked_debug(Format, ...) SysDbgLockedWriteLine(DebugLevelDebug, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
#define locked_ubsan(Format, ...) SysDbgLockedWriteLine(DebugLevelUbsan, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define locked_debug(Format, ...)
|
||||||
|
#define locked_ubsan(Format, ...)
|
||||||
|
#endif
|
||||||
|
#define locked_trace(Format, ...) SysDbgLockedWriteLine(DebugLevelTrace, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
#define locked_fixme(Format, ...) SysDbgLockedWriteLine(DebugLevelFixme, __FILE__, __LINE__, __FUNCTION__, Format, ##__VA_ARGS__)
|
||||||
|
|
||||||
#endif // __cplusplus
|
#endif // __cplusplus
|
||||||
|
|
||||||
#endif // !__FENNIX_KERNEL_DEBUGGER_H__
|
#endif // !__FENNIX_KERNEL_DEBUGGER_H__
|
||||||
|
Loading…
x
Reference in New Issue
Block a user