Added experimental ktrace_[v]printf() functions to libroot. Their output
is recorded in a kernel trace entry (if tracing is enabled). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23686 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -362,6 +362,9 @@ extern int disable_debugger(int state);
|
||||
extern void debug_printf(const char *format, ...)
|
||||
__attribute__ ((format (__printf__, 1, 2)));
|
||||
extern void debug_vprintf(const char *format, va_list args);
|
||||
extern void ktrace_printf(const char *format, ...)
|
||||
__attribute__ ((format (__printf__, 1, 2)));
|
||||
extern void ktrace_vprintf(const char *format, va_list args);
|
||||
|
||||
|
||||
/*-------------------------------------------------------------*/
|
||||
|
||||
@@ -300,6 +300,7 @@ extern status_t _kern_get_system_info(system_info *info, size_t size);
|
||||
|
||||
/* Debug output */
|
||||
extern void _kern_debug_output(const char *message);
|
||||
extern void _kern_ktrace_output(const char *message);
|
||||
extern status_t _kern_frame_buffer_update(addr_t baseAddress, int32 width,
|
||||
int32 height, int32 depth, int32 bytesPerRow);
|
||||
|
||||
|
||||
@@ -87,6 +87,8 @@ char* alloc_tracing_buffer_strcpy(const char* source, size_t maxSize,
|
||||
bool user);
|
||||
status_t tracing_init(void);
|
||||
|
||||
void _user_ktrace_output(const char *message);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -317,6 +317,32 @@ AbstractTraceEntry::AddDump(TraceOutput& out)
|
||||
bool AbstractTraceEntry::sPrintTeamID = false;
|
||||
|
||||
|
||||
// #pragma mark -
|
||||
|
||||
|
||||
#if ENABLE_TRACING
|
||||
|
||||
class UserTraceEntry : public AbstractTraceEntry {
|
||||
public:
|
||||
UserTraceEntry(const char* message)
|
||||
{
|
||||
fMessage = alloc_tracing_buffer_strcpy(message, 256, true);
|
||||
|
||||
Initialized();
|
||||
}
|
||||
|
||||
virtual void AddDump(TraceOutput& out)
|
||||
{
|
||||
out.Print("user: %s", fMessage);
|
||||
}
|
||||
|
||||
private:
|
||||
char* fMessage;
|
||||
};
|
||||
|
||||
#endif // ENABLE_TRACING
|
||||
|
||||
|
||||
// #pragma mark - trace filters
|
||||
|
||||
|
||||
@@ -1026,3 +1052,12 @@ tracing_init(void)
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_user_ktrace_output(const char *message)
|
||||
{
|
||||
#if ENABLE_TRACING
|
||||
new(nothrow) UserTraceEntry(message);
|
||||
#endif // ENABLE_TRACING
|
||||
}
|
||||
|
||||
|
||||
@@ -289,3 +289,23 @@ debug_vprintf(const char *format, va_list args)
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ktrace_printf(const char *format, ...)
|
||||
{
|
||||
va_list list;
|
||||
va_start(list, format);
|
||||
|
||||
ktrace_vprintf(format, list);
|
||||
|
||||
va_end(list);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ktrace_vprintf(const char *format, va_list args)
|
||||
{
|
||||
char buffer[1024];
|
||||
vsnprintf(buffer, sizeof(buffer), format, args);
|
||||
|
||||
_kern_ktrace_output(buffer);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user