in record.py [0:0]
def main(args=None):
global orig_attrs
global rfile_format
global rfile_permission
global remove_perf_data
if not args:
parser = argparse.ArgumentParser()
set_argparser(parser)
args = parser.parse_args()
_damon.chk_permission()
_damon.chk_update_debugfs(args.debugfs)
if args.rbuf and not _damon.feature_supported('record'):
print('# \'--rbuf\' will be ignored')
if not args.rbuf:
args.rbuf = 1024 * 1024
rfile_format = args.output_type
remove_perf_data = not args.leave_perf_data
rfile_permission = int(args.output_permission, 8)
if rfile_permission < 0o0 or rfile_permission > 0o777:
print('wrong --output_permission (%s)' % rfile_permission)
exit(1)
signal.signal(signal.SIGINT, sighandler)
signal.signal(signal.SIGTERM, sighandler)
orig_attrs = _damon.current_attrs()
new_attrs = _damon.cmd_args_to_attrs(args)
init_regions = _damon.cmd_args_to_init_regions(args)
numa_node = args.numa_node
target = args.target
if target == 'paddr': # physical memory address space
cmd_target = False
if not init_regions:
if numa_node != None:
init_regions = _paddr_layout.paddr_region_of(numa_node)
else:
init_regions = [_paddr_layout.default_paddr_region()]
elif not subprocess.call('which %s &> /dev/null' % target.split()[0],
shell=True, executable='/bin/bash'):
cmd_target = True
else:
try:
pid = int(target)
except:
print('target \'%s\' is not supported' % target)
exit(1)
cmd_target = False
do_record(target, cmd_target, args.target_ids_prefix, init_regions,
new_attrs, orig_attrs)