コード例 #1
0
ファイル: elfloader.py プロジェクト: zsipos/seL4
def run(tree: fdt.FdtParser, hardware: rule.HardwareYaml,
        config: config.Config, args: argparse.Namespace):
    devices = tree.get_elfloader_devices()
    cpu_info = get_elfloader_cpus(tree, devices)

    max_reg = 1
    device_info = []
    for dev in devices:
        obj = {
            'compat': hardware.get_matched_compatible(dev),
            'path': dev.path,
            'regions': dev.get_regions()
        }
        max_reg = max(len(obj['regions']), max_reg)

        device_info.append(obj)

    device_info.sort(key=lambda a: a['compat'])

    template = Environment(loader=BaseLoader,
                           trim_blocks=True,
                           lstrip_blocks=True).from_string(HEADER_TEMPLATE)

    template_args = dict(
        builtins.__dict__, **{
            'cpus': cpu_info,
            'devices': device_info,
            'max_reg': max_reg,
            'uses_psci': any([c['enable_method'] == 'psci' for c in cpu_info])
        })

    data = template.render(template_args)
    args.elfloader_out.write(data)
    args.elfloader_out.close()
コード例 #2
0
ファイル: compat_strings.py プロジェクト: sunnybird/seL4
def run(tree: FdtParser, hw_yaml: HardwareYaml, config: Config,
        args: argparse.Namespace):
    if not args.compat_strings_out:
        raise ValueError(
            'You need to specify a compat-strings-out to use compat strings output'
        )
    chosen = tree.get_kernel_devices()

    compatibles = set()
    for dev in chosen:
        compatibles.add(hw_yaml.get_matched_compatible(dev))

    args.compat_strings_out.write(';'.join(sorted(compatibles)) + ';\n')
    args.compat_strings_out.close()