Browse Source

scripts: Removing init function pointer from check_init_priorities.py

As the pointer has been removed from struct init_entry, there is no point
to look for it nor to display any information about it (obviously).

Fixing the test script as well.

Signed-off-by: Tomasz Bursztyka <tobu@bang-olufsen.dk>
pull/92309/head
Tomasz Bursztyka 2 months ago committed by Benjamin Cabé
parent
commit
653f1bf123
  1. 21
      scripts/build/check_init_priorities.py
  2. 21
      scripts/build/check_init_priorities_test.py

21
scripts/build/check_init_priorities.py

@ -202,15 +202,14 @@ class ZephyrInitLevels:
raise ValueError(f"no symbol at addr {addr:08x}") raise ValueError(f"no symbol at addr {addr:08x}")
obj, size, shidx = self._objects[addr] obj, size, shidx = self._objects[addr]
arg0_name = self._object_name(self._initlevel_pointer(addr, 0, shidx)) arg_name = self._object_name(self._initlevel_pointer(addr, 0, shidx))
arg1_name = self._object_name(self._initlevel_pointer(addr, 1, shidx))
self.initlevels[level].append(f"{obj}: {arg0_name}({arg1_name})") self.initlevels[level].append(f"{obj}: {arg_name}")
ordinal = self._device_ord_from_name(arg1_name) ordinal = self._device_ord_from_name(arg_name)
if ordinal: if ordinal:
prio = Priority(level, priority) prio = Priority(level, priority)
self.devices[ordinal] = (prio, arg0_name) self.devices[ordinal] = prio
addr += size addr += size
priority += 1 priority += 1
@ -256,8 +255,8 @@ class Validator():
self.log.info(f"Ignoring priority: {dev_node._binding.compatible}") self.log.info(f"Ignoring priority: {dev_node._binding.compatible}")
return return
dev_prio, dev_init = self._obj.devices.get(dev_ord, (None, None)) dev_prio = self._obj.devices.get(dev_ord, None)
dep_prio, dep_init = self._obj.devices.get(dep_ord, (None, None)) dep_prio = self._obj.devices.get(dep_ord, None)
if not dev_prio or not dep_prio: if not dev_prio or not dep_prio:
return return
@ -272,12 +271,12 @@ class Validator():
"the devicetree dependencies.") "the devicetree dependencies.")
self.errors += 1 self.errors += 1
self.log.error( self.log.error(
f"{dev_node.path} <{dev_init}> is initialized before its dependency " f"{dev_node.path} is initialized before its dependency "
f"{dep_node.path} <{dep_init}> ({dev_prio} < {dep_prio})") f"{dep_node.path} ({dev_prio} < {dep_prio})")
else: else:
self.log.info( self.log.info(
f"{dev_node.path} <{dev_init}> {dev_prio} > " f"{dev_node.path} {dev_prio} > "
f"{dep_node.path} <{dep_init}> {dep_prio}") f"{dep_node.path} {dep_prio}")
def check_edt(self): def check_edt(self):
"""Scan through all known devices and validate the init priorities.""" """Scan through all known devices and validate the init priorities."""

21
scripts/build/check_init_priorities_test.py

@ -215,12 +215,8 @@ class testZephyrInitLevels(unittest.TestCase):
def mock_obj_name(*args): def mock_obj_name(*args):
if args[0] == (0, 0, 0): if args[0] == (0, 0, 0):
return "i0"
elif args[0] == (0, 1, 0):
return "__device_dts_ord_11" return "__device_dts_ord_11"
elif args[0] == (4, 0, 0): elif args[0] == (4, 0, 0):
return "i1"
elif args[0] == (4, 1, 0):
return "__device_dts_ord_22" return "__device_dts_ord_22"
return f"name_{args[0][0]}_{args[0][1]}" return f"name_{args[0][0]}_{args[0][1]}"
mock_on.side_effect = mock_obj_name mock_on.side_effect = mock_obj_name
@ -230,14 +226,15 @@ class testZephyrInitLevels(unittest.TestCase):
self.assertDictEqual(obj.initlevels, { self.assertDictEqual(obj.initlevels, {
"EARLY": [], "EARLY": [],
"PRE_KERNEL_1": [], "PRE_KERNEL_1": [],
"PRE_KERNEL_2": ["a: i0(__device_dts_ord_11)", "b: i1(__device_dts_ord_22)"], "PRE_KERNEL_2": ["a: __device_dts_ord_11", "b: __device_dts_ord_22"],
"POST_KERNEL": ["c: name_8_0(name_8_1)"], "POST_KERNEL": ["c: name_8_0"],
"APPLICATION": [], "APPLICATION": [],
"SMP": [], "SMP": [],
}) })
self.assertDictEqual(obj.devices, { self.assertDictEqual(obj.devices, {
11: (check_init_priorities.Priority("PRE_KERNEL_2", 0), "i0"), 11: check_init_priorities.Priority("PRE_KERNEL_2", 0),
22: (check_init_priorities.Priority("PRE_KERNEL_2", 1), "i1"), 22: check_init_priorities.Priority("PRE_KERNEL_2", 1),
}) })
class testValidator(unittest.TestCase): class testValidator(unittest.TestCase):
@ -303,14 +300,14 @@ class testValidator(unittest.TestCase):
validator._ord2node[2]._binding = None validator._ord2node[2]._binding = None
validator._ord2node[2].path = "/2" validator._ord2node[2].path = "/2"
validator._obj.devices = {1: (10, "i1"), 2: (20, "i2")} validator._obj.devices = {1: 10, 2: 20}
validator._check_dep(2, 1) validator._check_dep(2, 1)
validator._check_dep(1, 2) validator._check_dep(1, 2)
validator.log.info.assert_called_once_with("/2 <i2> 20 > /1 <i1> 10") validator.log.info.assert_called_once_with("/2 20 > /1 10")
validator.log.error.assert_has_calls([ validator.log.error.assert_has_calls([
mock.call("/1 <i1> is initialized before its dependency /2 <i2> (10 < 20)") mock.call("/1 is initialized before its dependency /2 (10 < 20)")
]) ])
self.assertEqual(validator.errors, 1) self.assertEqual(validator.errors, 1)
@ -327,7 +324,7 @@ class testValidator(unittest.TestCase):
validator._ord2node[2]._binding = None validator._ord2node[2]._binding = None
validator._ord2node[2].path = "/2" validator._ord2node[2].path = "/2"
validator._obj.devices = {1: (10, "i1"), 2: (10, "i2")} validator._obj.devices = {1: 10, 2: 10,}
with self.assertRaises(ValueError): with self.assertRaises(ValueError):
validator._check_dep(1, 2) validator._check_dep(1, 2)

Loading…
Cancel
Save