Just like the array of 4 in the C struct.
Signed-off-by: Andrej Utz <[email protected]>
---
pyjailhouse/config_parser.py | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/pyjailhouse/config_parser.py b/pyjailhouse/config_parser.py
index 6ab769ff..a45aa7d7 100644
--- a/pyjailhouse/config_parser.py
+++ b/pyjailhouse/config_parser.py
@@ -155,20 +155,30 @@ class CacheRegion(CStruct):
class Irqchip(CStruct):
- __slots__ = 'address', 'id', 'pin_base', 'pin_bitmap_lo', 'pin_bitmap_hi',
+ __slots__ = 'address', 'id', 'pin_base',
_BIN_FIELD_NUM = len(__slots__)
- _BIN_FMT = struct.Struct('QIIQQ')
+ _BIN_FMT = struct.Struct('QII')
+ _BIN_FMT_PIN_MAP = struct.Struct('4I')
+
+ # constructed fields
+ __slots__ += 'pin_bitmap',
def __init__(self):
self.address = 0
self.id = 0
self.pin_base = 0
- self.pin_bitmap_lo = 0
- self.pin_bitmap_hi = 0
+ self.pin_bitmap = [0,0,0,0]
def is_standard(self):
return self.address == 0xfec00000
+ @classmethod
+ def parse(cls, stream):
+ self = cls.parse_class(cls, stream)
+ pin_fmt = cls._BIN_FMT_PIN_MAP
+ self.pin_bitmap = pin_fmt.unpack_from(stream.read(pin_fmt.size))
+ return self
+
class PIORegion(CStruct):
__slots__ = 'base', 'length',
--
2.28.0
--
You received this message because you are subscribed to the Google Groups
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jailhouse-dev/20200825145032.115837-6-andrej.utz%40st.oth-regensburg.de.