#!/usr/bin/env python3 import argparse import base64 import copy import glob import imp import os import re import shlex import signal import stat import subprocess import sys this = sys.modules[__name__] # Default paths. root_dir = os.path.dirname(os.path.abspath(__file__)) data_dir = os.path.join(root_dir, 'data') p9_dir = os.path.join(data_dir, '9p') gem5_non_default_src_root_dir = os.path.join(data_dir, 'gem5') gem5_readfile_file = os.path.join(data_dir, 'readfile') out_dir = os.path.join(root_dir, 'out') bench_boot = os.path.join(out_dir, 'bench-boot.txt') common_dir = os.path.join(out_dir, 'common') dl_dir = os.path.join(common_dir, 'dl') submodules_dir = os.path.join(root_dir, 'submodules') buildroot_src_dir = os.path.join(submodules_dir, 'buildroot') gem5_default_src_dir = os.path.join(submodules_dir, 'gem5') linux_src_dir = os.path.join(submodules_dir, 'linux') qemu_src_dir = os.path.join(submodules_dir, 'qemu') parsec_src_dir = os.path.join(submodules_dir, 'parsec-benchmark') # Other default variables. arch_map = { 'a': 'arm', 'A': 'aarch64', 'x': 'x86_64', } arches = [arch_map[k] for k in arch_map] gem5_cpt_prefix = '^cpt\.' sha = subprocess.check_output(['git', '-C', root_dir, 'log', '-1', '--format=%H']).decode().rstrip() config_file = os.path.join(data_dir, 'config') if os.path.exists(config_file): config = imp.load_source('config', config_file) configs = {x:getattr(config, x) for x in dir(config) if not x.startswith('__')} # TODO ## Benchmark a command. ## ## $1: command to benchmark ## $2: where to append write results to. Default: /dev/null. ## ## Result format: ## ## cmd ## time