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:
Ingo Weinhold
2008-01-21 15:10:05 +00:00
parent 0fc3b83496
commit a54c125e37
5 changed files with 61 additions and 0 deletions
+3
View File
@@ -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);
/*-------------------------------------------------------------*/
+1
View File
@@ -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);
+2
View File
@@ -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
+35
View File
@@ -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
}
+20
View File
@@ -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);
}