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, ...)
|
extern void debug_printf(const char *format, ...)
|
||||||
__attribute__ ((format (__printf__, 1, 2)));
|
__attribute__ ((format (__printf__, 1, 2)));
|
||||||
extern void debug_vprintf(const char *format, va_list args);
|
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 */
|
/* Debug output */
|
||||||
extern void _kern_debug_output(const char *message);
|
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,
|
extern status_t _kern_frame_buffer_update(addr_t baseAddress, int32 width,
|
||||||
int32 height, int32 depth, int32 bytesPerRow);
|
int32 height, int32 depth, int32 bytesPerRow);
|
||||||
|
|
||||||
|
|||||||
@@ -87,6 +87,8 @@ char* alloc_tracing_buffer_strcpy(const char* source, size_t maxSize,
|
|||||||
bool user);
|
bool user);
|
||||||
status_t tracing_init(void);
|
status_t tracing_init(void);
|
||||||
|
|
||||||
|
void _user_ktrace_output(const char *message);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -317,6 +317,32 @@ AbstractTraceEntry::AddDump(TraceOutput& out)
|
|||||||
bool AbstractTraceEntry::sPrintTeamID = false;
|
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
|
// #pragma mark - trace filters
|
||||||
|
|
||||||
|
|
||||||
@@ -1026,3 +1052,12 @@ tracing_init(void)
|
|||||||
return B_OK;
|
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