@@ -8422,52 +8422,57 @@ def runRecordStartCmd(self):
84228422 if self.cmdList["sched/sched_process_wait"]:
84238423 SystemManager.writeCmd('sched/sched_process_wait/enable', '1')
84248424
8425+ # enable all irq events #
84258426 if self.cmdList["irq"]:
84268427 SystemManager.writeCmd('irq/enable', '1')
84278428
84288429 # options for dependency tracing #
8429- # toDo: support sys_recv systemcall for x86, x64 #
8430- if SystemManager.depEnable and self.cmdList["raw_syscalls/sys_enter"]:
8431- cmd = "(id == %s || id == %s || id == %s || id == %s || id == %s || id == %s)" % \
8432- (ConfigManager.sysList.index("sys_write"), \
8433- ConfigManager.sysList.index("sys_poll"), \
8434- ConfigManager.sysList.index("sys_epoll_wait"), \
8435- ConfigManager.sysList.index("sys_select"), \
8436- ConfigManager.sysList.index("sys_recv"), \
8437- ConfigManager.sysList.index("sys_futex"))
8438-
8439- SystemManager.writeCmd('raw_syscalls/sys_enter/filter', cmd)
8440- SystemManager.writeCmd('raw_syscalls/sys_enter/enable', '1')
8430+ if SystemManager.depEnable is False and SystemManager.futexEnable is False:
8431+ SystemManager.writeCmd('raw_syscalls/sys_enter/filter', '0')
8432+ SystemManager.writeCmd('raw_syscalls/sys_enter/enable', '0')
8433+ elif SystemManager.depEnable:
8434+ # toDo: support sys_recv systemcall for x86, x64 #
8435+ if SystemManager.arch == 'arm':
8436+ ecmd = \
8437+ "(id == %s || id == %s || id == %s || id == %s || id == %s || id == %s)" % \
8438+ (ConfigManager.sysList.index("sys_write"), \
8439+ ConfigManager.sysList.index("sys_poll"), \
8440+ ConfigManager.sysList.index("sys_epoll_wait"), \
8441+ ConfigManager.sysList.index("sys_select"), \
8442+ ConfigManager.sysList.index("sys_recv"), \
8443+ ConfigManager.sysList.index("sys_futex"))
8444+ rcmd = \
8445+ "((id == %s || id == %s || id == %s || id == %s || id == %s || id == %s) && ret > 0)" % \
8446+ (ConfigManager.sysList.index("sys_write"), \
8447+ ConfigManager.sysList.index("sys_poll"), \
8448+ ConfigManager.sysList.index("sys_epoll_wait"), \
8449+ ConfigManager.sysList.index("sys_select"), \
8450+ ConfigManager.sysList.index("sys_recv"), \
8451+ ConfigManager.sysList.index("sys_futex"))
8452+
8453+ if self.cmdList["sched/sched_switch"]:
8454+ SystemManager.writeCmd('sched/sched_switch/enable', '1')
8455+ if self.cmdList["sched/sched_wakeup"]:
8456+ SystemManager.writeCmd('sched/sched_wakeup/enable', '1')
8457+
8458+ SystemManager.writeCmd('raw_syscalls/sys_enter/filter', ecmd)
8459+ SystemManager.writeCmd('raw_syscalls/sys_enter/enable', '1')
8460+ SystemManager.writeCmd('raw_syscalls/sys_exit/filter', rcmd)
8461+ SystemManager.writeCmd('raw_syscalls/sys_exit/enable', '1')
8462+ else:
8463+ SystemManager.printError(\
8464+ "tracing thread dependecy is not supported yet except for ARM")
8465+ sys.exit(0)
84418466 elif SystemManager.futexEnable:
8442- cmd = "(id == %s)" % (ConfigManager.sysList.index("sys_futex"))
8443- SystemManager.writeCmd('raw_syscalls/sys_enter/filter', cmd )
8467+ ecmd = "(id == %s)" % (ConfigManager.sysList.index("sys_futex"))
8468+ SystemManager.writeCmd('raw_syscalls/sys_enter/filter', ecmd )
84448469 SystemManager.writeCmd('raw_syscalls/sys_enter/enable', '1')
84458470 self.cmdList["raw_syscalls/sys_enter"] = True
8446- else:
8447- SystemManager.writeCmd('raw_syscalls/sys_enter/filter', '0')
8448- SystemManager.writeCmd('raw_syscalls/sys_enter/enable', '0')
84498471
8450- # options for dependency tracing #
8451- if SystemManager.depEnable and self.cmdList["raw_syscalls/sys_exit"]:
8452- cmd = "((id == %s || id == %s || id == %s || id == %s || id == %s || id == %s) && ret > 0)" % \
8453- (ConfigManager.sysList.index("sys_write"), \
8454- ConfigManager.sysList.index("sys_poll"), \
8455- ConfigManager.sysList.index("sys_epoll_wait"), \
8456- ConfigManager.sysList.index("sys_select"), \
8457- ConfigManager.sysList.index("sys_recv"), \
8458- ConfigManager.sysList.index("sys_futex"))
8459-
8460- SystemManager.writeCmd('raw_syscalls/sys_exit/filter', cmd)
8461- SystemManager.writeCmd('raw_syscalls/sys_exit/enable', '1')
8462- elif SystemManager.futexEnable:
8463- cmd = "(id == %s && ret == 0)" % (ConfigManager.sysList.index("sys_futex"))
8464- SystemManager.writeCmd('raw_syscalls/sys_exit/filter', cmd)
8472+ rcmd = "(id == %s && ret == 0)" % (ConfigManager.sysList.index("sys_futex"))
8473+ SystemManager.writeCmd('raw_syscalls/sys_exit/filter', rcmd)
84658474 SystemManager.writeCmd('raw_syscalls/sys_exit/enable', '1')
84668475 self.cmdList["raw_syscalls/sys_exit"] = True
8467- else:
8468- SystemManager.writeCmd('raw_syscalls/sys_exit/filter', '0')
8469- SystemManager.writeCmd('raw_syscalls/sys_exit/enable', '0')
8470-
84718476
84728477 # options for systemcall tracing #
84738478 if self.cmdList["raw_syscalls"]:
@@ -14507,17 +14512,20 @@ def parse(self, string):
1450714512 if m is not None:
1450814513 ed = m.groupdict()
1450914514
14510- # set status of thread #
14511- lastTid = self.lastTidPerCore[ed['core']]
14512- self.threadData[lastTid]['stop'] = float(ed['time'])
14513- self.threadData[lastTid]['lastStatus'] = 'S'
14514-
14515- # set status of core #
14516- scoreId = '0[%s]' % ed['core']
14517- self.threadData[scoreId]['offCnt'] += 1
14518- self.threadData[scoreId]['lastOff'] = float(ed['time'])
14519- self.threadData[scoreId]['start'] = float(ed['time'])
14520- self.threadData[scoreId]['lastStatus'] = 'R'
14515+ try:
14516+ # set status of thread #
14517+ lastTid = self.lastTidPerCore[ed['core']]
14518+ self.threadData[lastTid]['stop'] = float(ed['time'])
14519+ self.threadData[lastTid]['lastStatus'] = 'S'
14520+
14521+ # set status of core #
14522+ scoreId = '0[%s]' % ed['core']
14523+ self.threadData[scoreId]['offCnt'] += 1
14524+ self.threadData[scoreId]['lastOff'] = float(ed['time'])
14525+ self.threadData[scoreId]['start'] = float(ed['time'])
14526+ self.threadData[scoreId]['lastStatus'] = 'R'
14527+ except:
14528+ pass
1452114529
1452214530 # save consol log #
1452314531 self.consoleData.append([d['thread'], core, time, etc])
0 commit comments