diff options
| author | Matt Spinler <spinler@us.ibm.com> | 2017-02-28 09:37:38 -0600 |
|---|---|---|
| committer | Matt Spinler <spinler@us.ibm.com> | 2017-03-14 13:21:26 -0500 |
| commit | f716f32ab2b6007de5a0f5196d3c4a7e5b6fc6cc (patch) | |
| tree | 235ceae4f6745716cf2396ee768882d9567c6d83 | |
| parent | 3697b7031b3b9fc9a8e480fb03c0bb46d8d20723 (diff) | |
| download | openpower-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>
| -rw-r--r-- | .gitignore | 26 | ||||
| -rw-r--r-- | Makefile.am | 11 | ||||
| -rwxr-xr-x | bootstrap.sh | 18 | ||||
| -rw-r--r-- | configure.ac | 22 | ||||
| -rw-r--r-- | p9_procedures.cpp | 33 | ||||
| -rw-r--r-- | p9_procedures.hpp | 22 | ||||
| -rw-r--r-- | proc_control.cpp | 74 |
7 files changed, 206 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..757923d --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +openpower-proc-control +*.o +*.lo +*.la +*.sw* +Makefile +Makefile.in +configure +.deps +.libs +aclocal.m4 +ar-lib +*-libtool +autom4te.cache/ +compile +config.guess +config.h +config.h.in +config.log +config.status +config.sub +depcomp +install-sh +ltmain.sh +missing +stamp-h1 diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..28dee78 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,11 @@ +AM_DEFAULT_SOURCE_EXT = .cpp + +sbin_PROGRAMS = \ + openpower-proc-control + +openpower_proc_control_SOURCES = \ + proc_control.cpp \ + p9_procedures.cpp + +openpower_proc_control_LDFLAGS = $(PHOSPHOR_LOGGING_LIBS) +openpower_proc_control_CXXFLAGS = $(PHOSPHOR_LOGGING_CFLAGS) diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 0000000..9941c73 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,18 @@ +#!/bin/sh -xe + +AUTOCONF_FILES="Makefile.in aclocal.m4 ar-lib autom4te.cache compile \ + config.guess config.h.in config.sub configure depcomp install-sh \ + ltmain.sh missing *libtool test-driver" + +case $1 in + clean) + test -f Makefile && make maintainer-clean + for file in ${AUTOCONF_FILES}; do + find -name "$file" | xargs -r rm -rf + done + exit 0 + ;; +esac + +autoreconf -i +echo 'Run "./configure ${CONFIGURE_FLAGS} && make"'
\ No newline at end of file diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..7abbefb --- /dev/null +++ b/configure.ac @@ -0,0 +1,22 @@ +AC_PREREQ([2.69]) +AC_INIT([openpower-proc-control], [1.0], [https://github.com/openbmc/openpower-proc-control/issues]) +AC_LANG([C++]) +AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror foreign dist-xz]) +AM_SILENT_RULES([yes]) + +# Checks for programs +AC_PROG_CXX +AC_PROG_INSTALL #Checks/sets the install variable to be used +AC_PROG_MAKE_SET + +# Checks for typedefs, structures, and compiler characteristics. +AX_CXX_COMPILE_STDCXX_14([noext]) +AX_APPEND_COMPILE_FLAGS([-Wall -Werror], [CXXFLAGS]) + +# Checks for library functions +LT_INIT + +PKG_CHECK_MODULES([PHOSPHOR_LOGGING], [phosphor-logging],, [AC_MSG_ERROR([Could not find phosphor-logging...openbmc/phosphor-logging package required])]) + +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/p9_procedures.cpp b/p9_procedures.cpp new file mode 100644 index 0000000..37a3b10 --- /dev/null +++ b/p9_procedures.cpp @@ -0,0 +1,33 @@ +/** + * 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. + */ +namespace openpower +{ +namespace p9 +{ + +void startHost() +{ + +} + + +void vcsWorkaround() +{ + +} + +} +} diff --git a/p9_procedures.hpp b/p9_procedures.hpp new file mode 100644 index 0000000..2e7ff1a --- /dev/null +++ b/p9_procedures.hpp @@ -0,0 +1,22 @@ +#pragma once + +namespace openpower +{ +namespace p9 +{ + +/** + * @brief Starts the self boot engine on P9 position 0 to kick off a boot. + * @return void + */ +void startHost(); + + +/** + * @brief Performs the 'VCS Workaround' on all P9s in the system. + * @return void + */ +void vcsWorkaround(); + +} +} 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; +} |

