2
0
Fork 0

Patch Genode Labs builds for unlabeled LOG sessions (SOTEST)

This commit is contained in:
Ehmry - 2020-02-19 14:52:34 +01:00
parent a8f2b9e864
commit bfebc6dcef
2 changed files with 88 additions and 0 deletions

View File

@ -25,6 +25,8 @@ in stdenvGcc.mkDerivation ({
sha256 = "0j0wfwqmv8mivfkpra1pb02a8dy1nnsakr3v6l5y964dfkq3737i";
};
patches = [ ./unlabeled-log.patch ];
nativeBuildInputs = with nixpkgs.buildPackages; [ binutils tcl which ];
enableParallelBuilding = true;

View File

@ -0,0 +1,86 @@
diff --git a/repos/base/src/core/include/log_root.h b/repos/base/src/core/include/log_root.h
index db98ebfc5b..085c6053f9 100644
--- a/repos/base/src/core/include/log_root.h
+++ b/repos/base/src/core/include/log_root.h
@@ -30,12 +30,7 @@ namespace Genode {
*/
Log_session_component *_create_session(const char *args) override
{
- char label_buf[Log_session_component::LABEL_LEN];
-
- Arg label_arg = Arg_string::find_arg(args, "label");
- label_arg.string(label_buf, sizeof(label_buf), "");
-
- return new (md_alloc()) Log_session_component(label_buf);
+ return new (md_alloc()) Log_session_component(label_from_args(args));
}
public:
diff --git a/repos/base/src/core/include/log_session_component.h b/repos/base/src/core/include/log_session_component.h
index 7b6ddab815..29bda822cc 100644
--- a/repos/base/src/core/include/log_session_component.h
+++ b/repos/base/src/core/include/log_session_component.h
@@ -17,27 +17,32 @@
#include <util/string.h>
#include <base/log.h>
#include <base/rpc_server.h>
+#include <base/session_label.h>
#include <log_session/log_session.h>
namespace Genode {
class Log_session_component : public Rpc_object<Log_session>
{
- public:
-
- enum { LABEL_LEN = 128 };
-
private:
- char _label[LABEL_LEN];
+ Session_label const _label;
+
+ static Session_label _expand_label(Session_label const &label)
+ {
+ if (label == "init -> unlabeled")
+ return "";
+ else
+ return Session_label("[", label, "] ");
+ }
public:
/**
* Constructor
*/
- Log_session_component(const char *label) {
- strncpy(_label, label, sizeof(_label)); }
+ Log_session_component(Session_label const &label)
+ : _label(_expand_label(label)) { }
/*****************
@@ -54,21 +59,17 @@ namespace Genode {
char const *string = string_buf.string();
size_t len = strlen(string);
- char buf[string_buf.MAX_SIZE];
unsigned from_i = 0;
-
for (unsigned i = 0; i < len; i++) {
if (string[i] == '\n') {
- memcpy(buf, string + from_i, i - from_i);
- buf[i - from_i] = 0;
- log("[", Cstring(_label), "] ", Cstring(buf));
+ log(_label, Cstring(string + from_i, i - from_i));
from_i = i + 1;
}
}
/* if last character of string was not a line break, add one */
if (from_i < len)
- log("[", Cstring(_label), "] ", Cstring(string + from_i));
+ log(_label, Cstring(string + from_i));
return len;
}