summaryrefslogtreecommitdiffstats
path: root/proc_control.cpp
diff options
context:
space:
mode:
authorMatt Spinler <spinler@us.ibm.com>2017-02-28 09:37:38 -0600
committerMatt Spinler <spinler@us.ibm.com>2017-03-14 13:21:26 -0500
commitf716f32ab2b6007de5a0f5196d3c4a7e5b6fc6cc (patch)
tree235ceae4f6745716cf2396ee768882d9567c6d83 /proc_control.cpp
parent3697b7031b3b9fc9a8e480fb03c0bb46d8d20723 (diff)
downloadopenpower-proc-control-f716f32ab2b6007de5a0f5196d3c4a7e5b6fc6cc.tar.gz
openpower-proc-control-f716f32ab2b6007de5a0f5196d3c4a7e5b6fc6cc.zip
Add startHost and vcsWorkaround stubs
Change-Id: Id696a7735930806373c214da50660ee0ee830598 Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Diffstat (limited to 'proc_control.cpp')
-rw-r--r--proc_control.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/proc_control.cpp b/proc_control.cpp
new file mode 100644
index 0000000..8f6f86c
--- /dev/null
+++ b/proc_control.cpp
@@ -0,0 +1,74 @@
+/**
+ * Copyright © 2017 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <algorithm>
+#include <functional>
+#include <iostream>
+#include <phosphor-logging/log.hpp>
+#include "p9_procedures.hpp"
+
+constexpr auto procedures =
+{
+ std::make_tuple("startHost", openpower::p9::startHost),
+ std::make_tuple("vcsWorkaround", openpower::p9::vcsWorkaround)
+};
+
+void usage(char** argv)
+{
+ std::cerr << "Usage: " << argv[0] << " [action]\n";
+ std::cerr << " actions:\n";
+
+ for (const auto& p : procedures)
+ {
+ std::cerr << " " << std::get<0>(p) << "\n";
+ }
+}
+
+int main(int argc, char** argv)
+{
+ if (argc != 2)
+ {
+ usage(argv);
+ return -1;
+ }
+
+ std::string action{argv[1]};
+
+ auto finder = [&action](const auto& p)
+ {
+ return std::get<0>(p) == action;
+ };
+ auto procedure = std::find_if(procedures.begin(), procedures.end(), finder);
+
+ if (procedure == procedures.end())
+ {
+ usage(argv);
+ return -1;
+ }
+
+ auto function = std::get<1>(*procedure);
+ try
+ {
+ function();
+ }
+ catch (std::exception& e)
+ {
+ //TODO: commit an actual error that does a callout
+ phosphor::logging::log<phosphor::logging::level::ERR>(e.what());
+ return -1;
+ }
+
+ return 0;
+}
OpenPOWER on IntegriCloud