From 2c43a6e189b0992050cda7b67429dfa87dd116dc Mon Sep 17 00:00:00 2001 From: Alex Forencich Date: Sun, 13 Oct 2019 15:41:12 -0700 Subject: [PATCH] Use mmap objects instead of bytearrays --- tb/pcie.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/tb/pcie.py b/tb/pcie.py index 63cdeba..1c7a5d7 100644 --- a/tb/pcie.py +++ b/tb/pcie.py @@ -24,6 +24,7 @@ THE SOFTWARE. import inspect import math +import mmap import struct from myhdl import * @@ -3277,31 +3278,31 @@ class RootComplex(Switch): def alloc_region(self, size, read=None, write=None): addr = 0 - arr = None + mem = None addr = align(self.region_limit, 2**math.ceil(math.log(size, 2))-1) self.region_limit = addr+size-1 if not read and not write: - arr = bytearray(size) - self.regions.append((addr, size, arr)) + mem = mmap.mmap(-1, size) + self.regions.append((addr, size, mem)) else: self.regions.append((addr, size, read, write)) - return addr, arr + return addr, mem def alloc_io_region(self, size, read=None, write=None): addr = 0 - arr = None + mem = None addr = align(self.io_region_limit, 2**math.ceil(math.log(size, 2))-1) self.io_region_limit = addr+size-1 if not read and not write: - arr = bytearray(size) - self.io_regions.append((addr, size, arr)) + mem = mmap.mmap(-1, size) + self.io_regions.append((addr, size, mem)) else: self.io_regions.append((addr, size, read, write)) - return addr, arr + return addr, mem def find_region(self, addr): for region in self.regions: