summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Peschke <mpeschke@de.ibm.com>2017-04-08 19:02:59 +0200
committerSachin Gupta <sgupta2m@in.ibm.com>2017-11-07 09:57:34 -0500
commitdbb8adce3d255b9ff0e2c7f6de019d1927cd635d (patch)
tree97efe78788630d57101212dcc398070598a8c73b
parent55c0c777de88b11446f570ce45e9ecbf985d0e67 (diff)
downloadtalos-sbe-dbb8adce3d255b9ff0e2c7f6de019d1927cd635d.tar.gz
talos-sbe-dbb8adce3d255b9ff0e2c7f6de019d1927cd635d.zip
p9_dd_container: simple generic standalone DD level container
Change-Id: I4c9d8cb28d4ae6a8b21c87ebaad07c1fd7163b85 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39588 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Claus M. Olsen <cmolsen@us.ibm.com> Reviewed-by: Sumit Kumar <sumit_kumar@in.ibm.com> Reviewed-by: Martin Peschke <mpeschke@de.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49297 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
-rw-r--r--src/import/chips/p9/utils/imageProcs/p9_dd_container.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/import/chips/p9/utils/imageProcs/p9_dd_container.h b/src/import/chips/p9/utils/imageProcs/p9_dd_container.h
new file mode 100644
index 00000000..7026a40c
--- /dev/null
+++ b/src/import/chips/p9/utils/imageProcs/p9_dd_container.h
@@ -0,0 +1,94 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/import/chips/p9/utils/imageProcs/p9_dd_container.h $ */
+/* */
+/* OpenPOWER sbe Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2017 */
+/* [+] 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 _P9_DD_CONTAINER_H_
+#define _P9_DD_CONTAINER_H_
+
+#include <stdint.h>
+
+#define P9_DD_CONTAINER_MAGIC 0x4444434F // "DDCO"
+
+#define P9_DD_SUCCESS 0
+#define P9_DD_FAILURE_BROKEN 1
+#define P9_DD_FAILURE_NOMEM 2
+#define P9_DD_FAILURE_NOT_FOUND 3
+#define P9_DD_FAILURE_DOES_NOT_EXIST 4
+#define P9_DD_FAILURE_DUPLICATE 5
+
+// header for each dd level block inside container
+struct p9_dd_block
+{
+ uint32_t iv_offset;
+ uint32_t iv_size;
+ uint8_t iv_dd;
+ uint8_t iv_reserved[3];
+};
+
+// container header
+struct p9_dd_cont
+{
+ uint32_t iv_magic;
+ uint8_t iv_num;
+ uint8_t iv_reserved[3];
+ struct p9_dd_block iv_blocks[0];
+};
+
+// iterator that can be used to iterate through all dd level blocks
+struct p9_dd_iter
+{
+ struct p9_dd_cont* iv_cont;
+ uint8_t iv_idx;
+};
+
+// initialisation of iterator
+#define P9_DD_ITER_INIT(dd_cont) { .iv_cont = (dd_cont), .iv_idx = 0 }
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// validates container
+int p9_dd_validate(struct p9_dd_cont* i_cont);
+
+void p9_dd_betoh(struct p9_dd_block* i_block_be,
+ struct p9_dd_block* io_block_he);
+
+// iterates through all dd level blocks
+struct p9_dd_block* p9_dd_next(struct p9_dd_iter* io_iter);
+
+// returns address of dd level content (without meta data)
+int p9_dd_get(
+ uint8_t* i_cont, uint8_t i_dd, uint8_t** o_buf, uint32_t* o_size);
+
+// enlarges (reallocates) container and copies dd level block into container
+int p9_dd_add(
+ uint8_t** io_cont, uint32_t* o_cont_size, uint8_t i_dd,
+ uint8_t* i_buf, uint32_t i_buf_size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
OpenPOWER on IntegriCloud