LogStream: Prefix userspace dbg() output with "ProcessName(PID): "

Using the new get_process_name() syscall, we can automatically prefix
all userspace debug logging.

Hopefully this is more helpful than annoying. We'll find out! :^)
This commit is contained in:
Andreas Kling 2019-08-15 20:55:45 +02:00
parent 6ad3efe067
commit 5122caf9a8
Notes: sideshowbarker 2024-07-19 12:40:17 +09:00
2 changed files with 28 additions and 9 deletions

View file

@ -49,4 +49,25 @@ const LogStream& operator<<(const LogStream& stream, const TStyle& style)
return stream;
}
#ifdef USERLAND
static TriState got_process_name = TriState::Unknown;
static char process_name_buffer[256];
#endif
DebugLogStream dbg()
{
DebugLogStream stream;
#ifdef USERLAND
if (got_process_name == TriState::Unknown) {
if (get_process_name(process_name_buffer, sizeof(process_name_buffer)) == 0)
got_process_name = TriState::True;
else
got_process_name = TriState::False;
}
if (got_process_name == TriState::True)
stream << TStyle(TStyle::Color::Brown, TStyle::Attribute::Bold) << process_name_buffer << '(' << getpid() << ")" << TStyle(TStyle::None) << ": ";
#endif
return stream;
}
}

View file

@ -3,8 +3,10 @@
#include <AK/kstdio.h>
#ifdef USERLAND
#include <AK/ScopedValueRollback.h>
#include <errno.h>
# include <AK/ScopedValueRollback.h>
# include <AK/StringView.h>
# include <errno.h>
# include <unistd.h>
#endif
namespace AK {
@ -14,8 +16,7 @@ class StringView;
class TStyle {
public:
enum NoneTag { DummyValue };
static NoneTag None;
enum NoneTag { None };
enum Color {
Black = 0,
@ -98,11 +99,6 @@ public:
}
};
inline DebugLogStream dbg()
{
return {};
}
inline const LogStream& operator<<(const LogStream& stream, const char* value)
{
int length = 0;
@ -131,6 +127,8 @@ inline const LogStream& operator<<(const LogStream& stream, bool value)
return stream << (value ? "true" : "false");
}
DebugLogStream dbg();
}
using AK::dbg;