Package envi :: Module util
[hide private]
[frames] | no frames]

Source Code for Module envi.util

 1   
2 -class CopyOnWrite:
3 """ 4 A memory object wrapper you can use to do copy-on-write memory 5 use and be able to simply reset it. 6 """ 7
8 - def __init__(self, memobj):
9 self.writes = [] 10 self.memobj = memobj
11
12 - def reset(self):
13 """ 14 Throw away the current writes and be fresh... 15 """ 16 self.writes = []
17
18 - def writeMemory(self, va, bytes):
19 # FIXME for now, allow any writes, but soon, do more 20 self.writes.append((va,va+len(bytes),bytes))
21
22 - def readMemory(self, va, size):
23 for memva,nextva,bytes in self.writes: 24 if memva <= va and va+size <= nextva: 25 offset = va-memva 26 return bytes[offset:offset+size] 27 return self.memobj.readMemory(va, size)
28