python: make Region parameter owner optional

Also ensure the description is created correctly.

Signed-off-by: Axel Heider <axelheider@gmx.de>
This commit is contained in:
Axel Heider
2021-11-08 23:09:15 +01:00
committed by Gerwin Klein
parent a16ec5ef7f
commit f4e38b1e5b
4 changed files with 6 additions and 6 deletions

View File

@@ -59,7 +59,7 @@ class ARMConfig(Config):
extra_reserved = set()
new = ret[0].align_base(self.get_kernel_phys_align())
resv = Region(ret[0].base, new.base - ret[0].base, None)
resv = Region(ret[0].base, new.base - ret[0].base)
extra_reserved.add(resv)
ret[0] = new
@@ -86,7 +86,7 @@ class RISCVConfig(Config):
physBase = ret[0].base
resv = Region(ret[0].base, self.get_bootloader_reserve(), None)
resv = Region(ret[0].base, self.get_bootloader_reserve())
extra_reserved.add(resv)
ret[0].base += self.get_bootloader_reserve()
ret[0].size -= self.get_bootloader_reserve()

View File

@@ -13,7 +13,7 @@ import hardware.utils as utils
class Region:
''' Represents a region of memory. '''
def __init__(self, base: int, size: int, owner: 'WrappedNode'):
def __init__(self, base: int, size: int, owner: 'WrappedNode' = None):
self.base = base
self.size = size
self.owner = owner
@@ -48,7 +48,7 @@ class Region:
return hash((self.base, self.size))
@staticmethod
def from_range(start, end, owner):
def from_range(start, end, owner=None):
''' create a region from a start/end rather than start/size '''
if start > end:
raise ValueError(

View File

@@ -100,7 +100,7 @@ def get_addrspace_exclude(regions: List[Region], config: Config):
# We can't create untypeds that exceed the addrspace_max, so we round down to the smallest
# untyped size alignment so that the kernel will be able to turn the entire range into untypeds.
as_max = utils.align_down(config.addrspace_max, config.get_smallest_kernel_object_alignment())
ret.add(Region(0, as_max, None))
ret.add(Region(0, as_max))
for reg in regions:
if type(reg) == KernelRegionGroup:

View File

@@ -39,7 +39,7 @@ class KernelRegionGroup:
def __init__(self, region: Region, kernel_name: str, page_bits: int, max_size: int, condition_macro: str = None, user_ok: bool = False):
self.macro = condition_macro
self.desc = region.owner.path
self.desc = region.owner.path if region.owner else 'dynamically generated region'
self.kernel_offset = -1
self.page_bits = page_bits
self.labels = {} # dict of label => offset within region.