Example #1
0
    def __init__(self, fd, **opts):
        s_eventbus.EventBus.__init__(self)

        self.alloclock = threading.Lock()

        self.on('heap:write', self._fireHeapSync)
        self.on('heap:resize', self._fireHeapSync)

        self.syncact = s_reactor.Reactor()
        self.syncact.act('heap:write', self._actSyncHeapWrite)
        self.syncact.act('heap:resize', self._actSyncHeapResize)

        self.pagesize = opts.get('pagesize', defpage)

        pagerem = self.pagesize % mmap.ALLOCATIONGRANULARITY
        if pagerem:
            self.pagesize += (mmap.ALLOCATIONGRANULARITY - pagerem)

        fd.seek(0, os.SEEK_END)

        size = fd.tell()

        if size == 0:

            size = 32  # a few qword slots for expansion
            used = headsize + size
            heaphead = self._genHeapHead(size) + s_compat.to_bytes(used, 8)

            rem = len(heaphead) % self.pagesize
            if rem:
                heaphead += b'\x00' * (self.pagesize - rem)

            fd.write(heaphead)

            fd.flush()

        self.fd = fd
        self.atom = opts.get('atom')

        if self.atom is None:
            self.atom = s_atomfile.getAtomFile(fd)

        self.used = s_compat.to_int(self.readoff(32, 8))

        self.onfini(self.atom.fini)
Example #2
0
    def __init__(self, fd, **opts):
        s_eventbus.EventBus.__init__(self)

        self.alloclock = threading.Lock()

        self.on('heap:write', self._fireHeapSync)
        self.on('heap:resize', self._fireHeapSync)

        self.syncact = s_reactor.Reactor()
        self.syncact.act('heap:write', self._actSyncHeapWrite )
        self.syncact.act('heap:resize', self._actSyncHeapResize )

        self.pagesize = opts.get('pagesize',defpage)

        pagerem = self.pagesize % mmap.ALLOCATIONGRANULARITY
        if pagerem:
            self.pagesize += ( mmap.ALLOCATIONGRANULARITY - pagerem )

        fd.seek(0,os.SEEK_END)

        size = fd.tell()

        if size == 0:

            size = 32 # a few qword slots for expansion
            used = headsize + size
            heaphead = self._genHeapHead(size) + s_compat.to_bytes(used,8)

            rem = len(heaphead) % self.pagesize
            if rem:
                heaphead += b'\x00' * (self.pagesize - rem)

            fd.write(heaphead)

            fd.flush()

        self.fd = fd
        self.atom = opts.get('atom')

        if self.atom == None:
            self.atom = s_atomfile.getAtomFile(fd)

        self.used = s_compat.to_int( self.readoff(32,8) )

        self.onfini( self.atom.fini )
Example #3
0
 def test_atomfile_get(self):
     fd = self._getTempFile()
     with s_atomfile.getAtomFile(fd) as atom:
         self._runAtomChecks(atom)
Example #4
0
 def test_atomfile_get(self):
     fd = self._getTempFile()
     with s_atomfile.getAtomFile(fd) as atom:
         self._runAtomChecks(atom)