summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/attn/common/attntarget.H
diff options
context:
space:
mode:
authorChris Phan <cphan@us.ibm.com>2014-08-21 21:48:36 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-12-03 10:46:43 -0600
commit605137529b178862bf2c28ea3c3da4fb48394991 (patch)
tree9ef0d3c4de57d3abd62ef79a0f73adf4df0c71ae /src/usr/diag/attn/common/attntarget.H
parent884df0a961451b7b00d99e07512b19f801ee7587 (diff)
downloadtalos-hostboot-605137529b178862bf2c28ea3c3da4fb48394991.tar.gz
talos-hostboot-605137529b178862bf2c28ea3c3da4fb48394991.zip
ATTN: code re-org in preparation for HBRT support
Change-Id: I100fafcfc794e8828e992438bacf8303a029a566 RTC: 110949 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/12949 Tested-by: Jenkins Server Reviewed-by: Zane Shelley <zshelle@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/diag/attn/common/attntarget.H')
-rw-r--r--src/usr/diag/attn/common/attntarget.H435
1 files changed, 435 insertions, 0 deletions
diff --git a/src/usr/diag/attn/common/attntarget.H b/src/usr/diag/attn/common/attntarget.H
new file mode 100644
index 000000000..141dcdf7a
--- /dev/null
+++ b/src/usr/diag/attn/common/attntarget.H
@@ -0,0 +1,435 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/diag/attn/common/attntarget.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2014 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* 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. */
+/* */
+/* IBM_PROLOG_END_TAG */
+#ifndef __ATTN_ATTNTARGET_H
+#define __ATTN_ATTNTARGET_H
+
+/**
+ * @file attntarget.H
+ *
+ * @brief HBATTN Target service wrapper class definitions.
+ */
+
+#include "common/attnfwd.H"
+#include <map>
+
+namespace ATTN
+{
+
+/**
+ * @brief TargetService Hold the installed target service implementation.
+ */
+class TargetService
+{
+ public:
+
+ /**
+ * @brief getMcsList Obtain the list of MCS unit targets
+ * for the given proc chip target.
+ *
+ * @param[in] i_proc The proc chip target for which a
+ * list of MCS unit targets should be obtained.
+ * @param[out] o_list The populated list of MCS unit targets.
+ */
+ void getMcsList(
+ TARGETING::TargetHandle_t i_proc,
+ TARGETING::TargetHandleList & o_list);
+
+ /**
+ * @brief getProc Find the requested membuf chip
+ * target parent proc chip target.
+ *
+ * @param[in] i_membuf The membuf chip target
+ * for which the parent proc chip target
+ * should be found.
+ *
+ * @retval[0] Did not find any associated proc chip target.
+ * @retval[!0] Associated proc chip parent target.
+ */
+ TARGETING::TargetHandle_t getProc(
+ TARGETING::TargetHandle_t i_membuf);
+
+ /**
+ * @brief getAllChips Get a list of chips.
+ *
+ * @param[out] o_list The populated list of chips.
+ * @param[in] i_type The type of chip for which a list
+ * should be obtained.
+ * @param[in] i_functional functional chip filter.
+ */
+ void getAllChips(
+ TARGETING::TargetHandleList & o_list,
+ TARGETING::TYPE i_type,
+ bool i_functional = true);
+
+ /**
+ * @brief getMcs Find the requested membuf chip
+ * target parent MCS unit target.
+ *
+ * @param[in] i_membuf The membuf chip target
+ * for which the parent MCS unit target
+ * should be found.
+ *
+ * @retval[0] Did not find any associated MCS unit target.
+ * @retval[!0] Associated MCS unit parent target.
+ */
+ TARGETING::TargetHandle_t getMcs(
+ TARGETING::TargetHandle_t i_membuf);
+
+ /**
+ * @brief getMcs Find the MCS unit target given
+ * the proc chip parent target and MCS position.
+ *
+ * @param[in] i_proc The proc chip target for which the
+ * MCS unit target should be found.
+ * @param[in] i_pos The MCS unit position for which the MCS
+ * unit target should be found.
+ *
+ * @retval[0] Did not find any associated MCS unit target.
+ * @retval[!0] Associated MCS unit target.
+ */
+ TARGETING::TargetHandle_t getMcs(
+ TARGETING::TargetHandle_t i_proc,
+ uint64_t i_pos);
+
+ /**
+ * @brief getMcsPos Find the MCS unit position given
+ * the MCS unit target.
+ *
+ * @param[in] i_mcs The MCS unit target for which the
+ * MCS unit position should be found.
+ * @param[out] o_pos The MCS unit position.
+ */
+ void getMcsPos(
+ TARGETING::TargetHandle_t i_mcs,
+ uint64_t & o_pos);
+
+ /**
+ * @brief getMembuf Find the requested MCS unit target
+ * child membuf chip target.
+ *
+ * @param[in] i_mcs The MCS unit target
+ * for which the child membuf chip target
+ * should be found.
+ *
+ * @retval[0] Did not find any associated membuf chip target.
+ * @retval[!0] Associated membuf chip target.
+ */
+ TARGETING::TargetHandle_t getMembuf(
+ TARGETING::TargetHandle_t i_mcs);
+
+ /**
+ * @brief getType Obtain the type of the provided target.
+ *
+ * @param[in] i_target The target for which the type
+ * should be obtained.
+ *
+ * @return The type of the provided target.
+ */
+ TARGETING::TYPE getType(
+ TARGETING::TargetHandle_t i_target);
+
+ /**
+ * @brief getAttribute Obtain the attribute for the requested target.
+ *
+ * @param[in] i_attribute The attribute to be obtained.
+ * @param[in] i_target The target for which the attribute
+ * should be obtained.
+ * @param[out] o_val The value of the attribute.
+ *
+ * @retval[true] The attribute was found.
+ * @retval[false] The attribute was not found.
+ */
+ bool getAttribute(
+ TARGETING::ATTRIBUTE_ID i_attribute,
+ TARGETING::TargetHandle_t i_target,
+ uint64_t & o_val);
+
+ /**
+ * @brief setImpl Set the active target service implementation.
+ *
+ * @param[in] i_impl The target service implementation to make active.
+ */
+ void setImpl(TargetServiceImpl & i_impl);
+
+ /**
+ * @brief ctor
+ */
+ TargetService();
+
+ private:
+
+ /**
+ * @brief iv_impl The active targete service implementation.
+ */
+ TargetServiceImpl * iv_impl;
+
+ /**
+ * @brief copy Disabled.
+ */
+ TargetService(const TargetService &);
+
+ /**
+ * @brief assignment Disabled.
+ */
+ TargetService & operator=(const TargetService &);
+
+ /**
+ * @brief Give access to the default implementation.
+ */
+ friend class TargetServiceImpl;
+};
+
+/**
+ * @brief TargetServiceImpl Target Service
+ * implementation interface requirement.
+ *
+ * Default implementation forwards calls to
+ * the real target service.
+ */
+class TargetServiceImpl
+{
+ public:
+
+ /**
+ * @brief getMcsList Obtain the list of MCS unit targets
+ * for the given proc chip target.
+ *
+ * @param[in] i_proc The proc chip target for which a
+ * list of MCS unit targets should be obtained.
+ * @param[out] o_list The populated list of MCS unit targets.
+ */
+ virtual void getMcsList(
+ TARGETING::TargetHandle_t i_proc,
+ TARGETING::TargetHandleList & o_list);
+
+ /**
+ * @brief getProc Find the requested membuf chip
+ * target parent proc chip target.
+ *
+ * @param[in] i_membuf The membuf chip target
+ * for which the parent proc chip target
+ * should be found.
+ *
+ * @retval[0] Did not find any associated proc chip target.
+ * @retval[!0] Associated proc chip parent target.
+ */
+ virtual TARGETING::TargetHandle_t getProc(
+ TARGETING::TargetHandle_t i_membuf);
+
+ /**
+ * @brief getMcs Find the requested membuf chip
+ * target parent MCS unit target.
+ *
+ * @param[in] i_membuf The membuf chip target
+ * for which the parent MCS unit target
+ * should be found.
+ *
+ * @retval[0] Did not find any associated MCS unit target.
+ * @retval[!0] Associated MCS unit parent target.
+ */
+ virtual TARGETING::TargetHandle_t getMcs(
+ TARGETING::TargetHandle_t i_membuf);
+
+ /**
+ * @brief getAllChips Get a list of chips.
+ *
+ * @param[out] o_list The populated list of chips.
+ * @param[in] i_type The type of chip for which a list
+ * should be obtained.
+ * @param[in] i_functional functional chip filter.
+ */
+ virtual void getAllChips(
+ TARGETING::TargetHandleList & o_list,
+ TARGETING::TYPE i_type,
+ bool i_functional = true);
+
+ /**
+ * @brief getMcs Find the MCS unit target given
+ * the proc chip parent target and MCS position.
+ *
+ * @param[in] i_proc The proc chip target for which the
+ * MCS unit target should be found.
+ * @param[in] i_pos The MCS unit position for which the MCS
+ * unit target should be found.
+ *
+ * @retval[0] Did not find any associated MCS unit target.
+ * @retval[!0] Associated MCS unit target.
+ */
+ virtual TARGETING::TargetHandle_t getMcs(
+ TARGETING::TargetHandle_t i_proc,
+ uint64_t i_pos);
+
+ /**
+ * @brief getMcsPos Find the MCS unit position given
+ * the MCS unit target.
+ *
+ * @param[in] i_mcs The MCS unit target for which the
+ * MCS unit position should be found.
+ * @param[out] o_pos The MCS unit position.
+ */
+ virtual void getMcsPos(
+ TARGETING::TargetHandle_t i_mcs,
+ uint64_t & o_pos);
+
+ /**
+ * @brief getMembuf Find the requested MCS unit target
+ * child membuf chip target.
+ *
+ * @param[in] i_mcs The MCS unit target
+ * for which the child membuf chip target
+ * should be found.
+ *
+ * @retval[0] Did not find any associated membuf chip target.
+ * @retval[!0] Associated membuf chip target.
+ */
+ virtual TARGETING::TargetHandle_t getMembuf(
+ TARGETING::TargetHandle_t i_mcs);
+
+ /**
+ * @brief getType Obtain the type of the provided target.
+ *
+ * @param[in] i_target The target for which the type
+ * should be obtained.
+ *
+ * @return The type of the provided target.
+ */
+ virtual TARGETING::TYPE getType(
+ TARGETING::TargetHandle_t i_target);
+
+ /**
+ * @brief getAttribute Obtain the attribute for the requested target.
+ *
+ * @param[in] i_attribute The attribute to be obtained.
+ * @param[in] i_target The target for which the attribute
+ * should be obtained.
+ * @param[out] o_val The value of the attribute.
+ *
+ * @retval[true] The attribute was found.
+ * @retval[false] The attribute was not found.
+ */
+ virtual bool getAttribute(
+ TARGETING::ATTRIBUTE_ID i_attribute,
+ TARGETING::TargetHandle_t i_target,
+ uint64_t & o_val);
+
+ /**
+ * @brief installTargetService
+ *
+ * Make this the active target service implementation.
+ */
+ void installTargetService();
+
+ /**
+ * @brief dtor
+ */
+ virtual ~TargetServiceImpl();
+
+ /**
+ * @brief ctor
+ */
+ TargetServiceImpl();
+};
+
+inline void TargetService::getMcsList(
+ TARGETING::TargetHandle_t i_proc,
+ TARGETING::TargetHandleList & o_list)
+{
+ return iv_impl->getMcsList(i_proc, o_list);
+}
+
+inline TARGETING::TargetHandle_t TargetService::getProc(
+ TARGETING::TargetHandle_t i_membuf)
+{
+ return iv_impl->getProc(i_membuf);
+}
+
+inline TARGETING::TargetHandle_t TargetService::getMcs(
+ TARGETING::TargetHandle_t i_membuf)
+{
+ return iv_impl->getMcs(i_membuf);
+}
+
+inline TARGETING::TargetHandle_t TargetService::getMcs(
+ TARGETING::TargetHandle_t i_proc,
+ uint64_t i_pos)
+{
+ return iv_impl->getMcs(i_proc, i_pos);
+}
+
+inline void TargetService::getAllChips(
+ TARGETING::TargetHandleList & o_list,
+ TARGETING::TYPE i_type,
+ bool i_functional)
+{
+ iv_impl->getAllChips(o_list, i_type, i_functional);
+}
+
+inline void TargetService::getMcsPos(
+ TARGETING::TargetHandle_t i_mcs,
+ uint64_t & o_pos)
+{
+ iv_impl->getMcsPos(i_mcs, o_pos);
+}
+
+inline TARGETING::TargetHandle_t TargetService::getMembuf(
+ TARGETING::TargetHandle_t i_mcs)
+{
+ return iv_impl->getMembuf(i_mcs);
+}
+
+inline TARGETING::TYPE TargetService::getType(
+ TARGETING::TargetHandle_t i_target)
+{
+ return iv_impl->getType(i_target);
+}
+
+inline bool TargetService::getAttribute(
+ TARGETING::ATTRIBUTE_ID i_attribute,
+ TARGETING::TargetHandle_t i_target,
+ uint64_t & o_val)
+{
+ return iv_impl->getAttribute(i_attribute, i_target, o_val);
+}
+
+inline void TargetService::setImpl(TargetServiceImpl & i_impl)
+{
+ iv_impl = &i_impl;
+}
+
+inline TargetService::TargetService() :
+ iv_impl(&Singleton<TargetServiceImpl>::instance())
+{
+ // by default call the real target service
+}
+
+inline void TargetServiceImpl::installTargetService()
+{
+ getTargetService().setImpl(*this);
+}
+
+inline TargetServiceImpl::TargetServiceImpl() {}
+
+}
+#endif
OpenPOWER on IntegriCloud