def collect_memory_pool_el(memory_pool_el, namespace, machine, bootinfo, pools, virtual): """ Record a memory pool.""" if virtual: pool = weaver.bootinfo.VirtPool(memory_pool_el.name, machine, pools) bootinfo.add_virtpool(pool) else: pool = weaver.bootinfo.PhysPool(memory_pool_el.name, machine, pools) bootinfo.add_physpool(pool) # New namespace for the memory pool's caps. new_namespace = namespace.add_namespace(memory_pool_el.name) # Add the standard caps for the pool. create_standard_caps(pool, new_namespace) for el in memory_pool_el.children: if el.tag == 'memory': src = getattr(el, 'src', None) base = getattr(el, 'base', None) size = getattr(el, 'size', None) pool.add_memory(src = src, base = base, size = size, machine=machine, pools=pools) if not virtual and getattr(memory_pool_el, "direct", False): pool.set_direct(True) for base, end, mem_type in pool.pool.get_freelist(): size = end - base + 1 pools.add_direct_memory(base, size, mem_type)
def setup_direct_pool(namespace, machine, bootinfo, pools): # At the moment we just have a special virtpool. direct_pool = weaver.bootinfo.VirtPool("direct", machine, pools) bootinfo.add_virtpool(direct_pool) new_namespace = namespace.add_namespace("direct") # This cap is probably never used. master = weaver.bootinfo.Cap("master", ["master"]) direct_pool.add_cap(master) new_namespace.add(master.get_name(), master)