def size_of(obj): ''' This function logic is clagged from the CapDL translator's `sizeOf`. ''' if isinstance(obj, Frame): return obj.size elif isinstance(obj, Untyped): return 2**obj.size_bits elif isinstance(obj, CNode): if obj.size_bits == 'auto': return calculate_cnode_size(obj) return 16 * 2**obj.size_bits elif isinstance(obj, Endpoint): return 16 elif isinstance(obj, Notification): return 16 elif isinstance(obj, ASIDPool): return 4 * 2**10 elif isinstance(obj, IOPageTable): return 4 * 2**10 elif isinstance(obj, IODevice): return 1 elif isinstance(obj, TCB): if arch in ('aarch32', 'arm_hyp'): return 512 elif arch == 'ia32': return 2**10 raise NotImplementedError('size_of TCB for arch: %s' % arch) elif isinstance(obj, PageDirectory): if arch in ('aarch32', 'arm_hyp'): return 16 * 2**10 elif arch == 'ia32': return 4 * 2**10 raise NotImplementedError('size_of PageDirectory for arch: %s' % arch) elif isinstance(obj, PageTable): if arch == 'aarch32': return 2**10 elif arch == 'arm_hyp': return 2 * 2**10 elif arch == 'ia32': return 4 * 2**10 raise NotImplementedError('size_of PageTable for arch: %s' % arch) raise NotImplementedError('size_of for type: %s' % type(obj))
def size_of(obj): ''' This function logic is clagged from the CapDL translator's `sizeOf`. ''' if isinstance(obj, Frame): return obj.size elif isinstance(obj, Untyped): return 2 ** obj.size_bits elif isinstance(obj, CNode): if obj.size_bits == 'auto': return calculate_cnode_size(obj) return 16 * 2 ** obj.size_bits elif isinstance(obj, Endpoint): return 16 elif isinstance(obj, Notification): return 16 elif isinstance(obj, ASIDPool): return 4 * 2 ** 10 elif isinstance(obj, IOPageTable): return 4 * 2 ** 10 elif isinstance(obj, IODevice): return 1 elif isinstance(obj, TCB): if arch in ('aarch32', 'arm_hyp'): return 512 elif arch == 'ia32': return 2 ** 10 raise NotImplementedError('size_of TCB for arch: %s' % arch) elif isinstance(obj, PageDirectory): if arch in ('aarch32', 'arm_hyp'): return 16 * 2 ** 10 elif arch == 'ia32': return 4 * 2 ** 10 raise NotImplementedError('size_of PageDirectory for arch: %s' % arch) elif isinstance(obj, PageTable): if arch == 'aarch32': return 2 ** 10 elif arch == 'arm_hyp': return 2 * 2 ** 10 elif arch == 'ia32': return 4 * 2 ** 10 raise NotImplementedError('size_of PageTable for arch: %s' % arch) raise NotImplementedError('size_of for type: %s' % type(obj))