Patch Genode Labs builds for unlabeled LOG sessions (SOTEST)
This commit is contained in:
parent
a8f2b9e864
commit
bfebc6dcef
|
@ -25,6 +25,8 @@ in stdenvGcc.mkDerivation ({
|
|||
sha256 = "0j0wfwqmv8mivfkpra1pb02a8dy1nnsakr3v6l5y964dfkq3737i";
|
||||
};
|
||||
|
||||
patches = [ ./unlabeled-log.patch ];
|
||||
|
||||
nativeBuildInputs = with nixpkgs.buildPackages; [ binutils tcl which ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue