From 8e65e3114acc8ba3d3daff3635c46ad933fa9a6c Mon Sep 17 00:00:00 2001 From: A-dead-pixel Date: Thu, 25 May 2023 20:31:04 +0200 Subject: [PATCH 1/3] Include for uint*_t This is required for building with gcc13. --- src/common/Exception.cc | 1 + src/common/Exception.h | 1 + src/common/ProcFS.cc | 1 + src/limits/MemoryLimitListener.cc | 1 + src/limits/MemoryLimitListener.h | 2 ++ src/limits/OutputLimitListener.cc | 1 + src/limits/OutputLimitListener.h | 2 ++ src/limits/ThreadsLimitListener.cc | 2 ++ src/limits/TimeLimitListener.cc | 1 + src/limits/TimeLimitListener.h | 1 + src/ns/MountNamespaceListener.cc | 1 + src/ns/MountNamespaceListener.h | 1 + src/perf/PerfListener.cc | 1 + src/perf/PerfListener.h | 2 ++ src/printer/OIModelOutputBuilder.cc | 2 ++ src/printer/OIModelOutputBuilder.h | 2 ++ src/printer/OutputBuilder.h | 1 + src/s2japp/Application.cc | 1 + src/s2japp/ApplicationArguments.cc | 1 + src/s2japp/ApplicationArguments.h | 1 + src/s2japp/ApplicationSettings.cc | 1 + src/s2japp/ApplicationSettings.h | 1 + src/seccomp/SeccompContext.cc | 1 + src/seccomp/SeccompContext.h | 1 + src/seccomp/SeccompListener.cc | 1 + src/seccomp/SeccompListener.h | 1 + src/seccomp/SeccompRule.cc | 2 ++ src/seccomp/SeccompRule.h | 1 + src/seccomp/action/ActionAllow.cc | 2 ++ src/seccomp/action/ActionAllow.h | 2 ++ src/seccomp/action/ActionErrno.cc | 2 ++ src/seccomp/action/ActionErrno.h | 2 ++ src/seccomp/action/ActionKill.cc | 2 ++ src/seccomp/action/ActionKill.h | 2 ++ src/seccomp/action/ActionTrace.cc | 1 + src/seccomp/action/ActionTrace.h | 1 + src/seccomp/action/SeccompAction.cc | 2 ++ src/seccomp/action/SeccompAction.h | 1 + src/seccomp/filter/LibSeccompFilter.cc | 1 + src/seccomp/filter/LibSeccompFilter.h | 1 + src/tracer/TraceExecutor.cc | 1 + src/tracer/TraceExecutor.h | 1 + src/tracer/Tracee.cc | 1 + src/tracer/Tracee.h | 1 + 44 files changed, 58 insertions(+) diff --git a/src/common/Exception.cc b/src/common/Exception.cc index 2e39ded..be171e8 100644 --- a/src/common/Exception.cc +++ b/src/common/Exception.cc @@ -2,6 +2,7 @@ #include "logger/Logger.h" +#include #include namespace s2j { diff --git a/src/common/Exception.h b/src/common/Exception.h index afed8df..41d30e0 100644 --- a/src/common/Exception.h +++ b/src/common/Exception.h @@ -1,5 +1,6 @@ #pragma once +#include #include namespace s2j { diff --git a/src/common/ProcFS.cc b/src/common/ProcFS.cc index 704dde0..d2cf88b 100644 --- a/src/common/ProcFS.cc +++ b/src/common/ProcFS.cc @@ -1,5 +1,6 @@ #include "ProcFS.h" +#include #include #include #include diff --git a/src/limits/MemoryLimitListener.cc b/src/limits/MemoryLimitListener.cc index d0e4c04..feb5bcc 100644 --- a/src/limits/MemoryLimitListener.cc +++ b/src/limits/MemoryLimitListener.cc @@ -12,6 +12,7 @@ #include #include +#include #include #include diff --git a/src/limits/MemoryLimitListener.h b/src/limits/MemoryLimitListener.h index 57f2633..7430fa1 100644 --- a/src/limits/MemoryLimitListener.h +++ b/src/limits/MemoryLimitListener.h @@ -5,6 +5,8 @@ #include "seccomp/policy/SyscallPolicy.h" #include "tracer/TraceEventListener.h" +#include + namespace s2j { namespace limits { diff --git a/src/limits/OutputLimitListener.cc b/src/limits/OutputLimitListener.cc index 4a8dc83..82b7909 100644 --- a/src/limits/OutputLimitListener.cc +++ b/src/limits/OutputLimitListener.cc @@ -8,6 +8,7 @@ #include "seccomp/filter/LibSeccompFilter.h" #include +#include #include #include diff --git a/src/limits/OutputLimitListener.h b/src/limits/OutputLimitListener.h index a72948d..8b3f811 100644 --- a/src/limits/OutputLimitListener.h +++ b/src/limits/OutputLimitListener.h @@ -4,6 +4,8 @@ #include "printer/OutputSource.h" #include "seccomp/policy/SyscallPolicy.h" +#include + namespace s2j { namespace limits { diff --git a/src/limits/ThreadsLimitListener.cc b/src/limits/ThreadsLimitListener.cc index 916030d..c9fc741 100644 --- a/src/limits/ThreadsLimitListener.cc +++ b/src/limits/ThreadsLimitListener.cc @@ -7,6 +7,8 @@ #include "seccomp/action/ActionKill.h" #include "seccomp/filter/LibSeccompFilter.h" +#include + namespace s2j { namespace limits { diff --git a/src/limits/TimeLimitListener.cc b/src/limits/TimeLimitListener.cc index 1198bad..abe8ccf 100644 --- a/src/limits/TimeLimitListener.cc +++ b/src/limits/TimeLimitListener.cc @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include diff --git a/src/limits/TimeLimitListener.h b/src/limits/TimeLimitListener.h index 69b543e..b742082 100644 --- a/src/limits/TimeLimitListener.h +++ b/src/limits/TimeLimitListener.h @@ -4,6 +4,7 @@ #include "printer/OutputSource.h" #include +#include namespace s2j { namespace limits { diff --git a/src/ns/MountNamespaceListener.cc b/src/ns/MountNamespaceListener.cc index 82add46..71a480b 100644 --- a/src/ns/MountNamespaceListener.cc +++ b/src/ns/MountNamespaceListener.cc @@ -6,6 +6,7 @@ #include "common/WithErrnoCheck.h" #include "logger/Logger.h" +#include #include #include #include diff --git a/src/ns/MountNamespaceListener.h b/src/ns/MountNamespaceListener.h index 4ee03b5..07b9ea9 100644 --- a/src/ns/MountNamespaceListener.h +++ b/src/ns/MountNamespaceListener.h @@ -9,6 +9,7 @@ #include +#include #include namespace s2j { diff --git a/src/perf/PerfListener.cc b/src/perf/PerfListener.cc index 19888ea..ac031b2 100644 --- a/src/perf/PerfListener.cc +++ b/src/perf/PerfListener.cc @@ -11,6 +11,7 @@ #include #include +#include #include #include diff --git a/src/perf/PerfListener.h b/src/perf/PerfListener.h index 1e21502..4a58a4b 100644 --- a/src/perf/PerfListener.h +++ b/src/perf/PerfListener.h @@ -4,6 +4,8 @@ #include "executor/ExecuteEventListener.h" #include "printer/OutputSource.h" +#include + namespace s2j { namespace perf { diff --git a/src/printer/OIModelOutputBuilder.cc b/src/printer/OIModelOutputBuilder.cc index 8df46ed..bf7b3e8 100644 --- a/src/printer/OIModelOutputBuilder.cc +++ b/src/printer/OIModelOutputBuilder.cc @@ -1,5 +1,7 @@ #include "OIModelOutputBuilder.h" +#include + namespace s2j { namespace printer { diff --git a/src/printer/OIModelOutputBuilder.h b/src/printer/OIModelOutputBuilder.h index 3ca5b4c..7ca1ef6 100644 --- a/src/printer/OIModelOutputBuilder.h +++ b/src/printer/OIModelOutputBuilder.h @@ -2,6 +2,8 @@ #include "OutputBuilder.h" +#include + namespace s2j { namespace printer { diff --git a/src/printer/OutputBuilder.h b/src/printer/OutputBuilder.h index 546dddd..d2fb959 100644 --- a/src/printer/OutputBuilder.h +++ b/src/printer/OutputBuilder.h @@ -1,5 +1,6 @@ #pragma once +#include #include namespace s2j { diff --git a/src/s2japp/Application.cc b/src/s2japp/Application.cc index ffba4fd..a6e2d5e 100644 --- a/src/s2japp/Application.cc +++ b/src/s2japp/Application.cc @@ -21,6 +21,7 @@ #include "seccomp/SeccompListener.h" #include "tracer/TraceExecutor.h" +#include #include #include #include diff --git a/src/s2japp/ApplicationArguments.cc b/src/s2japp/ApplicationArguments.cc index a364703..5f94212 100644 --- a/src/s2japp/ApplicationArguments.cc +++ b/src/s2japp/ApplicationArguments.cc @@ -1,6 +1,7 @@ #include "ApplicationArguments.h" #include #include +#include #include #include #include diff --git a/src/s2japp/ApplicationArguments.h b/src/s2japp/ApplicationArguments.h index 14b51af..2b2371a 100644 --- a/src/s2japp/ApplicationArguments.h +++ b/src/s2japp/ApplicationArguments.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include diff --git a/src/s2japp/ApplicationSettings.cc b/src/s2japp/ApplicationSettings.cc index 1757e90..317aa89 100644 --- a/src/s2japp/ApplicationSettings.cc +++ b/src/s2japp/ApplicationSettings.cc @@ -9,6 +9,7 @@ #include "seccomp/policy/DefaultPolicy.h" #include "seccomp/policy/PermissivePolicy.h" +#include #include #include diff --git a/src/s2japp/ApplicationSettings.h b/src/s2japp/ApplicationSettings.h index 5405f45..6cbd25d 100644 --- a/src/s2japp/ApplicationSettings.h +++ b/src/s2japp/ApplicationSettings.h @@ -7,6 +7,7 @@ #include "common/Utils.h" +#include #include #include #include diff --git a/src/seccomp/SeccompContext.cc b/src/seccomp/SeccompContext.cc index 24e77ef..be277d0 100644 --- a/src/seccomp/SeccompContext.cc +++ b/src/seccomp/SeccompContext.cc @@ -4,6 +4,7 @@ #include "common/FD.h" #include +#include namespace s2j { namespace seccomp { diff --git a/src/seccomp/SeccompContext.h b/src/seccomp/SeccompContext.h index 1351e4e..91e0081 100644 --- a/src/seccomp/SeccompContext.h +++ b/src/seccomp/SeccompContext.h @@ -6,6 +6,7 @@ #include +#include #include #include diff --git a/src/seccomp/SeccompListener.cc b/src/seccomp/SeccompListener.cc index f5f929e..82577a0 100644 --- a/src/seccomp/SeccompListener.cc +++ b/src/seccomp/SeccompListener.cc @@ -13,6 +13,7 @@ #include #include #include +#include #include namespace s2j { diff --git a/src/seccomp/SeccompListener.h b/src/seccomp/SeccompListener.h index ae0600c..678a025 100644 --- a/src/seccomp/SeccompListener.h +++ b/src/seccomp/SeccompListener.h @@ -14,6 +14,7 @@ #include "tracer/TraceEventListener.h" #include "tracer/Tracee.h" +#include #include #include #include diff --git a/src/seccomp/SeccompRule.cc b/src/seccomp/SeccompRule.cc index e1377ef..642e31b 100644 --- a/src/seccomp/SeccompRule.cc +++ b/src/seccomp/SeccompRule.cc @@ -1,6 +1,8 @@ #include "SeccompRule.h" #include "SeccompException.h" +#include + namespace s2j { namespace seccomp { diff --git a/src/seccomp/SeccompRule.h b/src/seccomp/SeccompRule.h index 1306b1e..ef15a56 100644 --- a/src/seccomp/SeccompRule.h +++ b/src/seccomp/SeccompRule.h @@ -4,6 +4,7 @@ #include "filter/LibSeccompFilter.h" #include "filter/SyscallFilter.h" +#include #include #include diff --git a/src/seccomp/action/ActionAllow.cc b/src/seccomp/action/ActionAllow.cc index 47e1ed0..0f15400 100644 --- a/src/seccomp/action/ActionAllow.cc +++ b/src/seccomp/action/ActionAllow.cc @@ -1,5 +1,7 @@ #include "ActionAllow.h" +#include + namespace s2j { namespace seccomp { namespace action { diff --git a/src/seccomp/action/ActionAllow.h b/src/seccomp/action/ActionAllow.h index f6cb4ca..9475bbd 100644 --- a/src/seccomp/action/ActionAllow.h +++ b/src/seccomp/action/ActionAllow.h @@ -2,6 +2,8 @@ #include "SeccompAction.h" +#include + namespace s2j { namespace seccomp { namespace action { diff --git a/src/seccomp/action/ActionErrno.cc b/src/seccomp/action/ActionErrno.cc index 9fb3132..fadebfe 100644 --- a/src/seccomp/action/ActionErrno.cc +++ b/src/seccomp/action/ActionErrno.cc @@ -2,6 +2,8 @@ #include "common/Exception.h" +#include + namespace s2j { namespace seccomp { namespace action { diff --git a/src/seccomp/action/ActionErrno.h b/src/seccomp/action/ActionErrno.h index d677e29..34c505f 100644 --- a/src/seccomp/action/ActionErrno.h +++ b/src/seccomp/action/ActionErrno.h @@ -2,6 +2,8 @@ #include "SeccompAction.h" +#include + namespace s2j { namespace seccomp { namespace action { diff --git a/src/seccomp/action/ActionKill.cc b/src/seccomp/action/ActionKill.cc index 2ae1b97..72ea749 100644 --- a/src/seccomp/action/ActionKill.cc +++ b/src/seccomp/action/ActionKill.cc @@ -1,5 +1,7 @@ #include "ActionKill.h" +#include + namespace s2j { namespace seccomp { namespace action { diff --git a/src/seccomp/action/ActionKill.h b/src/seccomp/action/ActionKill.h index 5a8194c..60ab077 100644 --- a/src/seccomp/action/ActionKill.h +++ b/src/seccomp/action/ActionKill.h @@ -2,6 +2,8 @@ #include "SeccompAction.h" +#include + namespace s2j { namespace seccomp { namespace action { diff --git a/src/seccomp/action/ActionTrace.cc b/src/seccomp/action/ActionTrace.cc index 2ecb92f..5b8bef4 100644 --- a/src/seccomp/action/ActionTrace.cc +++ b/src/seccomp/action/ActionTrace.cc @@ -1,5 +1,6 @@ #include "ActionTrace.h" +#include #include namespace s2j { diff --git a/src/seccomp/action/ActionTrace.h b/src/seccomp/action/ActionTrace.h index f2c8837..985fbf3 100644 --- a/src/seccomp/action/ActionTrace.h +++ b/src/seccomp/action/ActionTrace.h @@ -2,6 +2,7 @@ #include "SeccompAction.h" +#include #include #include diff --git a/src/seccomp/action/SeccompAction.cc b/src/seccomp/action/SeccompAction.cc index e5d1084..46b50e2 100644 --- a/src/seccomp/action/SeccompAction.cc +++ b/src/seccomp/action/SeccompAction.cc @@ -1,5 +1,7 @@ #include "SeccompAction.h" +#include + namespace s2j { namespace seccomp { namespace action { diff --git a/src/seccomp/action/SeccompAction.h b/src/seccomp/action/SeccompAction.h index 4c15e5e..874a4cb 100644 --- a/src/seccomp/action/SeccompAction.h +++ b/src/seccomp/action/SeccompAction.h @@ -3,6 +3,7 @@ #include "tracer/TraceAction.h" #include "tracer/Tracee.h" +#include #include namespace s2j { diff --git a/src/seccomp/filter/LibSeccompFilter.cc b/src/seccomp/filter/LibSeccompFilter.cc index f4fb4b7..dc107f0 100644 --- a/src/seccomp/filter/LibSeccompFilter.cc +++ b/src/seccomp/filter/LibSeccompFilter.cc @@ -1,6 +1,7 @@ #include "LibSeccompFilter.h" #include +#include #include namespace s2j { diff --git a/src/seccomp/filter/LibSeccompFilter.h b/src/seccomp/filter/LibSeccompFilter.h index 95e06f6..852e0d6 100644 --- a/src/seccomp/filter/LibSeccompFilter.h +++ b/src/seccomp/filter/LibSeccompFilter.h @@ -4,6 +4,7 @@ #include +#include #include namespace s2j { diff --git a/src/tracer/TraceExecutor.cc b/src/tracer/TraceExecutor.cc index d4f72bb..16eeebb 100644 --- a/src/tracer/TraceExecutor.cc +++ b/src/tracer/TraceExecutor.cc @@ -9,6 +9,7 @@ #include #include +#include namespace s2j { namespace tracer { diff --git a/src/tracer/TraceExecutor.h b/src/tracer/TraceExecutor.h index 57787f6..95f0aee 100644 --- a/src/tracer/TraceExecutor.h +++ b/src/tracer/TraceExecutor.h @@ -10,6 +10,7 @@ #include "executor/ExecuteEventListener.h" #include "printer/OutputSource.h" +#include #include #include #include diff --git a/src/tracer/Tracee.cc b/src/tracer/Tracee.cc index 288bf6e..d32807d 100644 --- a/src/tracer/Tracee.cc +++ b/src/tracer/Tracee.cc @@ -7,6 +7,7 @@ #include #include +#include namespace s2j { namespace tracer { diff --git a/src/tracer/Tracee.h b/src/tracer/Tracee.h index ab3236c..3e32875 100644 --- a/src/tracer/Tracee.h +++ b/src/tracer/Tracee.h @@ -2,6 +2,7 @@ #include "ProcessInfo.h" +#include #include #include From 23c40250c02702daada427b59dc6b5f898f387b0 Mon Sep 17 00:00:00 2001 From: A-dead-pixel Date: Fri, 26 May 2023 19:47:10 +0200 Subject: [PATCH 2/3] Remove duplicated/dead code from output builders --- src/printer/AugmentedOIOutputBuilder.cc | 15 --------------- src/printer/AugmentedOIOutputBuilder.h | 4 ---- src/printer/OIModelOutputBuilder.cc | 16 ++++++++++++++++ src/printer/OIModelOutputBuilder.h | 2 ++ src/printer/OITimeToolOutputBuilder.cc | 15 --------------- src/printer/OITimeToolOutputBuilder.h | 1 - src/printer/RealTimeOIOutputBuilder.cc | 15 --------------- src/printer/RealTimeOIOutputBuilder.h | 4 ---- 8 files changed, 18 insertions(+), 54 deletions(-) diff --git a/src/printer/AugmentedOIOutputBuilder.cc b/src/printer/AugmentedOIOutputBuilder.cc index df117e3..3ee370c 100644 --- a/src/printer/AugmentedOIOutputBuilder.cc +++ b/src/printer/AugmentedOIOutputBuilder.cc @@ -24,20 +24,5 @@ std::string AugmentedOIOutputBuilder::dump() const { return ss.str(); } -void AugmentedOIOutputBuilder::dumpStatus(std::ostream& ss) const { - if (killReason_ != KillReason::NONE) { - ss << killReasonComment_; - } - else if (killSignal_ > 0) { - ss << "process exited due to signal " << killSignal_; - } - else if (exitStatus_ > 0) { - ss << "runtime error " << exitStatus_; - } - else { - ss << "ok"; - } -} - } // namespace printer } // namespace s2j diff --git a/src/printer/AugmentedOIOutputBuilder.h b/src/printer/AugmentedOIOutputBuilder.h index 05ddfa5..d2a9be5 100644 --- a/src/printer/AugmentedOIOutputBuilder.h +++ b/src/printer/AugmentedOIOutputBuilder.h @@ -10,10 +10,6 @@ class AugmentedOIOutputBuilder : public OIModelOutputBuilder { std::string dump() const override; const static std::string FORMAT_NAME; - -private: - void dumpStatus(std::ostream& ss) const; - int encodeStatusCode() const; }; } // namespace printer diff --git a/src/printer/OIModelOutputBuilder.cc b/src/printer/OIModelOutputBuilder.cc index bf7b3e8..bb596dd 100644 --- a/src/printer/OIModelOutputBuilder.cc +++ b/src/printer/OIModelOutputBuilder.cc @@ -1,6 +1,7 @@ #include "OIModelOutputBuilder.h" #include +#include namespace s2j { namespace printer { @@ -55,5 +56,20 @@ OutputBuilder& OIModelOutputBuilder::setKillReason( return *this; } +void OIModelOutputBuilder::dumpStatus(std::ostream& ss) const { + if (killReason_ != KillReason::NONE) { + ss << killReasonComment_; + } + else if (killSignal_ > 0) { + ss << "process exited due to signal " << killSignal_; + } + else if (exitStatus_ > 0) { + ss << "runtime error " << exitStatus_; + } + else { + ss << "ok"; + } +} + } // namespace printer } // namespace s2j diff --git a/src/printer/OIModelOutputBuilder.h b/src/printer/OIModelOutputBuilder.h index 7ca1ef6..e92610d 100644 --- a/src/printer/OIModelOutputBuilder.h +++ b/src/printer/OIModelOutputBuilder.h @@ -31,6 +31,8 @@ class OIModelOutputBuilder : public OutputBuilder { KillReason killReason_ = KillReason::NONE; std::string killReasonComment_; + + void dumpStatus(std::ostream& ss) const; }; } // namespace printer diff --git a/src/printer/OITimeToolOutputBuilder.cc b/src/printer/OITimeToolOutputBuilder.cc index f728754..35f479c 100644 --- a/src/printer/OITimeToolOutputBuilder.cc +++ b/src/printer/OITimeToolOutputBuilder.cc @@ -19,21 +19,6 @@ std::string OITimeToolOutputBuilder::dump() const { return ss.str(); } -void OITimeToolOutputBuilder::dumpStatus(std::ostream& ss) const { - if (killReason_ != KillReason::NONE) { - ss << killReasonComment_; - } - else if (killSignal_ > 0) { - ss << "process exited due to signal " << killSignal_; - } - else if (exitStatus_ > 0) { - ss << "runtime error " << exitStatus_; - } - else { - ss << "ok"; - } -} - int OITimeToolOutputBuilder::encodeStatusCode() const { static const int CODE_SIG_BASE = 0; static const int CODE_RE_BASE = 200; diff --git a/src/printer/OITimeToolOutputBuilder.h b/src/printer/OITimeToolOutputBuilder.h index 7e70b15..0d02896 100644 --- a/src/printer/OITimeToolOutputBuilder.h +++ b/src/printer/OITimeToolOutputBuilder.h @@ -12,7 +12,6 @@ class OITimeToolOutputBuilder : public OIModelOutputBuilder { const static std::string FORMAT_NAME; private: - void dumpStatus(std::ostream& ss) const; int encodeStatusCode() const; }; diff --git a/src/printer/RealTimeOIOutputBuilder.cc b/src/printer/RealTimeOIOutputBuilder.cc index 27361a8..1b5fca1 100644 --- a/src/printer/RealTimeOIOutputBuilder.cc +++ b/src/printer/RealTimeOIOutputBuilder.cc @@ -24,20 +24,5 @@ std::string RealTimeOIOutputBuilder::dump() const { return ss.str(); } -void RealTimeOIOutputBuilder::dumpStatus(std::ostream& ss) const { - if (killReason_ != KillReason::NONE) { - ss << killReasonComment_; - } - else if (killSignal_ > 0) { - ss << "process exited due to signal " << killSignal_; - } - else if (exitStatus_ > 0) { - ss << "runtime error " << exitStatus_; - } - else { - ss << "ok"; - } -} - } // namespace printer } // namespace s2j diff --git a/src/printer/RealTimeOIOutputBuilder.h b/src/printer/RealTimeOIOutputBuilder.h index 14b6fdc..727ae8c 100644 --- a/src/printer/RealTimeOIOutputBuilder.h +++ b/src/printer/RealTimeOIOutputBuilder.h @@ -10,10 +10,6 @@ class RealTimeOIOutputBuilder : public OIModelOutputBuilder { std::string dump() const override; const static std::string FORMAT_NAME; - -private: - void dumpStatus(std::ostream& ss) const; - int encodeStatusCode() const; }; } // namespace printer From 3e31cba0a009b63c7bc577cc49f5b773e2fd99c2 Mon Sep 17 00:00:00 2001 From: A-dead-pixel Date: Fri, 26 May 2023 19:49:25 +0200 Subject: [PATCH 3/3] Add oiuser and human output formats Oiuser is for printing user CPU time, while the second one is human-readable. --- src/limits/TimeLimitListener.cc | 2 ++ src/printer/HumanReadableOIOutputBuilder.cc | 23 ++++++++++++++++ src/printer/HumanReadableOIOutputBuilder.h | 16 ++++++++++++ src/printer/OIModelOutputBuilder.cc | 10 +++++++ src/printer/OIModelOutputBuilder.h | 4 +++ src/printer/OutputBuilder.h | 6 +++++ src/printer/UserTimeOIOutputBuilder.cc | 29 +++++++++++++++++++++ src/printer/UserTimeOIOutputBuilder.h | 16 ++++++++++++ src/s2japp/ApplicationSettings.cc | 6 +++++ 9 files changed, 112 insertions(+) create mode 100644 src/printer/HumanReadableOIOutputBuilder.cc create mode 100644 src/printer/HumanReadableOIOutputBuilder.h create mode 100644 src/printer/UserTimeOIOutputBuilder.cc create mode 100644 src/printer/UserTimeOIOutputBuilder.h diff --git a/src/limits/TimeLimitListener.cc b/src/limits/TimeLimitListener.cc index abe8ccf..4a3689a 100644 --- a/src/limits/TimeLimitListener.cc +++ b/src/limits/TimeLimitListener.cc @@ -97,6 +97,8 @@ void TimeLimitListener::onPostExecute() { // TODO: run this just after child exit auto time = getTimeUsage(); outputBuilder_->setRealTimeMicroseconds(time->realTimeUs); + outputBuilder_->setUserTimeMicroseconds(time->processTimeUs.uTimeUs); + outputBuilder_->setSysTimeMicroseconds(time->processTimeUs.sTimeUs); verifyTimeUsage(move(time)); } diff --git a/src/printer/HumanReadableOIOutputBuilder.cc b/src/printer/HumanReadableOIOutputBuilder.cc new file mode 100644 index 0000000..7f5d4fd --- /dev/null +++ b/src/printer/HumanReadableOIOutputBuilder.cc @@ -0,0 +1,23 @@ +#include "HumanReadableOIOutputBuilder.h" + +#include + +namespace s2j { +namespace printer { + +const std::string HumanReadableOIOutputBuilder::FORMAT_NAME = "human"; + +std::string HumanReadableOIOutputBuilder::dump() const { + // This is inspired by the oiejq script + std::stringstream ss; + ss << std::endl << "-------------------------" << std::endl << "Result: "; + dumpStatus(ss); + ss << std::endl + << "Time used: " << static_cast(milliSecondsElapsed_) / 1000 + << "s" << std::endl + << "Memory used: " << memoryPeakKb_ / 1024 << "MiB" << std::endl; + return ss.str(); +} + +} // namespace printer +} // namespace s2j diff --git a/src/printer/HumanReadableOIOutputBuilder.h b/src/printer/HumanReadableOIOutputBuilder.h new file mode 100644 index 0000000..a5a7f90 --- /dev/null +++ b/src/printer/HumanReadableOIOutputBuilder.h @@ -0,0 +1,16 @@ +#pragma once + +#include "OIModelOutputBuilder.h" + +namespace s2j { +namespace printer { + +class HumanReadableOIOutputBuilder : public OIModelOutputBuilder { +public: + std::string dump() const override; + + const static std::string FORMAT_NAME; +}; + +} // namespace printer +} // namespace s2j diff --git a/src/printer/OIModelOutputBuilder.cc b/src/printer/OIModelOutputBuilder.cc index bb596dd..71a418f 100644 --- a/src/printer/OIModelOutputBuilder.cc +++ b/src/printer/OIModelOutputBuilder.cc @@ -24,6 +24,16 @@ OutputBuilder& OIModelOutputBuilder::setRealTimeMicroseconds(uint64_t time) { return *this; } +OutputBuilder& OIModelOutputBuilder::setUserTimeMicroseconds(uint64_t time) { + userMilliSecondsElapsed_ = time / 1000; + return *this; +} + +OutputBuilder& OIModelOutputBuilder::setSysTimeMicroseconds(uint64_t time) { + sysMilliSecondsElapsed_ = time / 1000; + return *this; +} + OutputBuilder& OIModelOutputBuilder::setMemoryPeak(uint64_t memoryPeakKb) { memoryPeakKb_ = memoryPeakKb; return *this; diff --git a/src/printer/OIModelOutputBuilder.h b/src/printer/OIModelOutputBuilder.h index e92610d..37f7bc5 100644 --- a/src/printer/OIModelOutputBuilder.h +++ b/src/printer/OIModelOutputBuilder.h @@ -13,6 +13,8 @@ class OIModelOutputBuilder : public OutputBuilder { OutputBuilder& setCyclesUsed(uint64_t cyclesUsed) override; OutputBuilder& setRealTimeMicroseconds(uint64_t time) override; + OutputBuilder& setUserTimeMicroseconds(uint64_t time) override; + OutputBuilder& setSysTimeMicroseconds(uint64_t time) override; OutputBuilder& setMemoryPeak(uint64_t memoryPeakKb) override; OutputBuilder& setExitStatus(uint32_t exitStatus) override; OutputBuilder& setKillSignal(uint32_t killSignal) override; @@ -24,6 +26,8 @@ class OIModelOutputBuilder : public OutputBuilder { uint64_t milliSecondsElapsed_; uint64_t realMilliSecondsElapsed_; + uint64_t userMilliSecondsElapsed_; + uint64_t sysMilliSecondsElapsed_; uint64_t memoryPeakKb_; uint64_t syscallsCounter_; uint32_t exitStatus_; diff --git a/src/printer/OutputBuilder.h b/src/printer/OutputBuilder.h index d2fb959..3b965f9 100644 --- a/src/printer/OutputBuilder.h +++ b/src/printer/OutputBuilder.h @@ -36,6 +36,12 @@ class OutputBuilder { virtual OutputBuilder& setRealTimeMicroseconds(uint64_t time) { return *this; } + virtual OutputBuilder& setUserTimeMicroseconds(uint64_t time) { + return *this; + } + virtual OutputBuilder& setSysTimeMicroseconds(uint64_t time) { + return *this; + } virtual OutputBuilder& setMemoryPeak(uint64_t memoryPeakKb) { return *this; } diff --git a/src/printer/UserTimeOIOutputBuilder.cc b/src/printer/UserTimeOIOutputBuilder.cc new file mode 100644 index 0000000..ed19af2 --- /dev/null +++ b/src/printer/UserTimeOIOutputBuilder.cc @@ -0,0 +1,29 @@ +#include "UserTimeOIOutputBuilder.h" +#include "common/Exception.h" + +#include + +namespace s2j { +namespace printer { + +const std::string UserTimeOIOutputBuilder::FORMAT_NAME = "oiuser"; + +std::string UserTimeOIOutputBuilder::dump() const { + KillReason reason = killReason_; + if (reason == KillReason::NONE) { + if (killSignal_ > 0 || exitStatus_ > 0) { + reason = KillReason::RE; + } + } + + std::stringstream ss; + ss << killReasonName(reason) << " " << exitStatus_ << " " + << userMilliSecondsElapsed_ << " " << 0ULL << " " << memoryPeakKb_ << " " + << syscallsCounter_ << std::endl; + dumpStatus(ss); + ss << std::endl; + return ss.str(); +} + +} // namespace printer +} // namespace s2j diff --git a/src/printer/UserTimeOIOutputBuilder.h b/src/printer/UserTimeOIOutputBuilder.h new file mode 100644 index 0000000..3fdc25e --- /dev/null +++ b/src/printer/UserTimeOIOutputBuilder.h @@ -0,0 +1,16 @@ +#pragma once + +#include "OIModelOutputBuilder.h" + +namespace s2j { +namespace printer { + +class UserTimeOIOutputBuilder : public OIModelOutputBuilder { +public: + std::string dump() const override; + + const static std::string FORMAT_NAME; +}; + +} // namespace printer +} // namespace s2j diff --git a/src/s2japp/ApplicationSettings.cc b/src/s2japp/ApplicationSettings.cc index 317aa89..c15bf42 100644 --- a/src/s2japp/ApplicationSettings.cc +++ b/src/s2japp/ApplicationSettings.cc @@ -4,8 +4,10 @@ #include "common/Utils.h" #include "printer/AugmentedOIOutputBuilder.h" +#include "printer/HumanReadableOIOutputBuilder.h" #include "printer/OITimeToolOutputBuilder.h" #include "printer/RealTimeOIOutputBuilder.h" +#include "printer/UserTimeOIOutputBuilder.h" #include "seccomp/policy/DefaultPolicy.h" #include "seccomp/policy/PermissivePolicy.h" @@ -91,8 +93,12 @@ const FactoryMap ApplicationSettings::OUTPUT_FORMATS( {{"oitt", std::make_shared}, + {"human", + std::make_shared}, {"oiaug", std::make_shared}, + {"oiuser", + std::make_shared}, {"oireal", std::make_shared}}); const std::string ApplicationSettings::DEFAULT_OUTPUT_FORMAT = "oitt";