config-tools: add get_shmem_regions and vm type checking to lib.py
Add a common method "get_shmem_regions": This method get <IVSHMEM_REGION> and extracts the region size, region position in xml and and vm ids which share this regions. Returns a dictionary: {'vm_id':{'region_name':{'id': region position,'size': region size,}}} Add vm type checking methods: is_pre_launched_vm, is_post_launched_vm and is_sos_vm. Tracked-On: #6024 Signed-off-by: Yang,Yu-chu <yu-chu.yang@intel.com> Reviewed-by: Junjie Mao <junjie.mao@intel.com>
This commit is contained in:
parent
7943c944b8
commit
c13acf3045
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright (C) 2021 Intel Corporation. All rights reserved.
|
||||
# Copyright (C) 2021 Intel Corporation.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
|
@ -8,7 +8,11 @@
|
|||
|
||||
import sys, os
|
||||
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'library'))
|
||||
import common, board_cfg_lib, scenario_cfg_lib
|
||||
import common, board_cfg_lib
|
||||
|
||||
PRE_LAUNCHED_VMS_TYPE = ["SAFETY_VM", "PRE_RT_VM", "PRE_STD_VM"]
|
||||
POST_LAUNCHED_VMS_TYPE = ["POST_STD_VM", "POST_RT_VM", "KATA_VM"]
|
||||
SOS_VM_TYPE = ["SOS_VM"]
|
||||
|
||||
def parse_hv_console(scenario_etree):
|
||||
"""
|
||||
|
@ -47,3 +51,41 @@ def get_native_ttys():
|
|||
tmp_dic['irq'] = int(ttys_irq)
|
||||
native_ttys[tty] = tmp_dic
|
||||
return native_ttys
|
||||
|
||||
def get_shmem_regions(etree):
|
||||
ivshmem_enabled = common.get_node("//IVSHMEM_ENABLED/text()", etree)
|
||||
if ivshmem_enabled == 'n':
|
||||
return {}
|
||||
|
||||
# <IVSHMEM_REGION> format is shm_name, shm_size, VM IDs
|
||||
# example: hv:/shm_region_0, 2, 0:2
|
||||
ivshmem_regions = etree.xpath("//IVSHMEM_REGION")
|
||||
shmem_regions = {}
|
||||
for idx in range(len(ivshmem_regions)):
|
||||
shm_string = ivshmem_regions[idx].text
|
||||
if shm_string is None:
|
||||
continue
|
||||
shm_string_list = shm_string.split(',')
|
||||
shm_name = shm_string_list[0].strip()
|
||||
shm_size = shm_string_list[1].strip()
|
||||
vmid_list = [vm_id.strip() for vm_id in shm_string_list[2].split(':')]
|
||||
for vm_id in vmid_list:
|
||||
if vm_id not in shmem_regions:
|
||||
shmem_regions[vm_id] = {}
|
||||
shmem_regions[vm_id][shm_name] = {'id' : str(idx), 'size' : shm_size}
|
||||
return shmem_regions
|
||||
|
||||
def is_pre_launched_vm(vm_type):
|
||||
if vm_type in PRE_LAUNCHED_VMS_TYPE:
|
||||
return True
|
||||
return False
|
||||
|
||||
def is_post_launched_vm(vm_type):
|
||||
if vm_type in POST_LAUNCHED_VMS_TYPE:
|
||||
return True
|
||||
return False
|
||||
|
||||
def is_sos_vm(vm_type):
|
||||
if vm_type in SOS_VM_TYPE:
|
||||
return True
|
||||
return False
|
Loading…
Reference in New Issue