Tools: Use dictionary to manage partition statistics
This patch creates a partition_statistics dictionary
to manage ipc_partition_num and sfn_partition_num.
It makes the scripts more readable and easier to maintain.
Signed-off-by: Xinyu Zhang <xinyu.zhang@arm.com>
Change-Id: Iee76f011c0611f77e8362105220bf4d7436e15a9
diff --git a/interface/include/config_impl.h.template b/interface/include/config_impl.h.template
index 5a6c3e1..8c79f04 100644
--- a/interface/include/config_impl.h.template
+++ b/interface/include/config_impl.h.template
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -10,7 +10,8 @@
#ifndef __CONFIG_IMPL_H__
#define __CONFIG_IMPL_H__
-{% if ipc_partition_num > 0 and sfn_partition_num == 0 %}
+{% if partition_statistics['ipc_partition_num'] > 0
+ and partition_statistics['sfn_partition_num'] == 0 %}
/* IPC model */
#define {{"%-56s"|format("CONFIG_TFM_SPM_BACKEND_IPC")}} 1
@@ -27,7 +28,8 @@
{{"%-56s"|format("CONFIG_TFM_NS_AGENT_TZ_STACK_SIZE")}}
#endif /* TFM_LVL > 1 */
-{% elif sfn_partition_num > 0 and ipc_partition_num == 0 %}
+{% elif partition_statistics['sfn_partition_num'] > 0
+ and partition_statistics['ipc_partition_num'] == 0 %}
/* SFN model */
#define {{"%-56s"|format("CONFIG_TFM_SPM_BACKEND_SFN")}} 1
#define {{"%-56s"|format("CONFIG_TFM_PSA_API_SFN_CALL")}} 1
@@ -61,7 +63,8 @@
#define {{"%-56s"|format("CONFIG_TFM_NS_AGENT_TZ_STACK_SIZE")}} \
((({{"0x%x"|format(total_stk.size)}} >> CONFIG_TFM_NS_AGENT_TZ_STK_SIZE_SHIFT_FACTOR) + 0x7) & (~0x7))
-{% elif sfn_partition_num > 0 and ipc_partition_num > 0 %}
+{% elif partition_statistics['sfn_partition_num'] > 0
+ and partition_statistics['ipc_partition_num'] > 0 %}
#error "IPC and SFN co-work not supported yet."
{% else %}
#error "Invalid partition number input, check configurations."
diff --git a/tools/tfm_parse_manifest_list.py b/tools/tfm_parse_manifest_list.py
index 8b7afa1..5652461 100644
--- a/tools/tfm_parse_manifest_list.py
+++ b/tools/tfm_parse_manifest_list.py
@@ -1,5 +1,5 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2018-2021, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2022, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -141,10 +141,12 @@
partition_list = []
all_manifests = []
- ipc_partition_num = 0
- sfn_partition_num = 0
pid_list = []
no_pid_manifest_idx = []
+ partition_statistics = {
+ 'ipc_partition_num': 0,
+ 'sfn_partition_num': 0
+ }
# Get all the manifests information as a dictionary
for i, item in enumerate(manifest_lists):
@@ -214,9 +216,9 @@
if pid == None or pid >= TFM_PID_BASE:
# Count the number of IPC/SFN partitions
if manifest['psa_framework_version'] == 1.1 and manifest['model'] == 'SFN':
- sfn_partition_num += 1
+ partition_statistics['sfn_partition_num'] += 1
else:
- ipc_partition_num += 1
+ partition_statistics['ipc_partition_num'] += 1
manifest_out_basename = os.path.splitext(os.path.basename(manifest_path))[0]
@@ -249,8 +251,7 @@
pid_list.append(pid)
context['partitions'] = partition_list
- context['ipc_partition_num'] = ipc_partition_num
- context['sfn_partition_num'] = sfn_partition_num
+ context['partition_statistics'] = partition_statistics
context['stateless_services'] = process_stateless_services(partition_list)