def forkat(forknum, clnum, pending): global program print "forkat",forknum,clnum,pending REGSIZE = program.tregs[1] dat = [] for p in pending: daddr = fhex(p['daddr']) ddata = fhex(p['ddata']) if len(p['ddata']) > 4: # ugly hack dsize = REGSIZE else: dsize = 1 flags = qira_log.IS_VALID | qira_log.IS_WRITE if daddr >= 0x1000: flags |= qira_log.IS_MEM flags |= dsize*8 dat.append((daddr, ddata, clnum-1, flags)) next_run_id = qira_socat.get_next_run_id() if len(dat) > 0: qira_log.write_log(qira_config.TRACE_FILE_BASE+str(next_run_id)+"_mods", dat) if args.server: qira_socat.start_bindserver(program, qira_config.FORK_PORT, forknum, clnum) else: if os.fork() == 0: program.execqira(["-qirachild", "%d %d %d" % (forknum, clnum, next_run_id)])