; -------------------------------------------------------------------------------- ; @Title: eMCOS specific menu ; @Description: - ; @Keywords: emcos menu awareness ; @Author: DIE ; @Copyright: (c) 1989-2014 Lauterbach GmbH, licensed for use with TRACE32(R) only ; -------------------------------------------------------------------------------- ; $Id: emcos.m 7861 2022-07-29 13:45:42Z amerkle $ NAME "TASK.EMCOS" IF !MENU.EXIST("TASK.EMCOS") ( add menu ( popup "&eMCOS" ( default menuitem "Display &Threads" "TASK.Thread" menuitem "Display &Processes" "TASK.Process" separator popup "&Stack Coverage" ( menuitem "&List Stacks" "TASK.STacK.view" menuitem "Add Task" "TASK.STacK.ADD" menuitem "Remove Task" "TASK.STacK.ReMove" menuitem "Reset Coverage" ( if icd()||simulator() ( PRIVATE &yes dialog.yesno "Overwrite unused stack space" "with stack fill pattern?" entry &yes if !&yes enddo ) TASK.STacK.Init ) ) ) popup "Trace" ( popup "[:alist]List" ( separator menuitem "&Task Switches" "Trace.List List.TASK" menuitem "&Default and Tasks" "Trace.List List.TASK DEFault" ) ) popup "Perf" ( separator popup "&Task Runtime" ( menuitem "&Prepare" ( if t.method.analyzer() ( Analyzer.AutoInit on ) if trace.flow() ( Break.Delete /TraceEnable Break.Set task.config(magic) /Write /TraceEnable ) Trace.Init ) menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASK" menuitem "[:achart]Show as &Timing" "Trace.CHART.TASK" menuitem "[:achart]Tracking with Trace &List" ( Trace.List List.TASK DEFault /Track Trace.CHART.TASK /Track ) ) popup "Task &Function Runtime" ( menuitem "&Prepare" ( if t.method.analyzer() ( Analyzer.AutoInit on Analyzer.STATistic.PreFetch on ) if trace.flow() ( Break.Delete /TraceData Break.Set task.config(magic) /Write /TraceData ) Trace.Init ) menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASKFUNC" menuitem "[:perf]Show as &Tree" "Trace.STATistic.TASKTREE" menuitem "[:perf]Show &Detailed Tree" "Trace.STATistic.TASKTREE ALL" menuitem "[:achart]Show as &Timing" "Trace.CHART.TASKFUNC" menuitem "[:alist]Show N&esting" "Trace.List List.TASK FUNC TI.FUNC" ) popup "Task &Status" ( menuitem "&Prepare" ( if t.method.analyzer() ( Analyzer.AutoInit on ) ) menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASKSTATE" menuitem "[:achart]Show as &Timing" "Trace.CHART.TASKSTATE" menuitem "[:achart]Tracking with Trace &List" ( Trace.List List.TASK DEFault /Track Trace.CHART.TASKSTATE /Track ) ) popup "CPU Load" ( menuitem "Set Idle Task..." ( dialog ( header "Set Idle Task" pos 0. 0. 24. 3. box "Name of idle task" pos 1. 1. 22. 1. idletask: defedit "BKGR" "" pos 3. 3. 7. 1. defbutton "OK" ( PRIVATE &idletask &idletask=dialog.string(idletask) GROUP.CreateTASK "idle" "&idletask" GROUP.COLOR "idle" NONE GROUP.COLOR "other" RED dialog.end ) pos 14. 3. 7. 1. button "Cancel" "dialog.end" ) ) menuitem "[:perf]Show Numerical" ( IF !GROUP.EXIST(idle) ( DIALOG.OK "Please set idle task first!" ENDDO ) GROUP.MERGE "idle" GROUP.MERGE "other" Trace.STATistic.TASK ) menuitem "[:aprochart]Show Profiling" ( IF !GROUP.EXIST(idle) ( DIALOG.OK "Please set idle task first!" ENDDO ) GROUP.MERGE "idle" GROUP.MERGE "other" Trace.PROfileChart.TASK ) menuitem "Disable CPU Load View" ( GROUP.SEParate "idle" GROUP.SEParate "other" ) menuitem "Enable CPU Load View" ( IF !GROUP.EXIST(idle) ( DIALOG.OK "Please set idle task first!" ENDDO ) GROUP.MERGE "idle" GROUP.MERGE "other" ) ) ) //popup "&Help" //( // menuitem "[:manual]eMCOS Awareness Manual" "HELP __RTOS_EMCOS_" //) ) menu "task.t" ( default menuitem "Display detailed" ( PRIVATE &magic &magic=address.offset(track.address()) TASK.Thread &magic ) menuitem "Display thread struct" ( PRIVATE &address &address=track.address() Var.View %Open %String (tcb_t*)(&address) ) separator menuitem "Display Stack Frame" ( PRIVATE &magic &magic=address.offset(track.address()) Frame /Locals /Caller /TASK &magic ) menuitem "Display Registers" ( PRIVATE &magic &magic=address.offset(track.address()) Register /Task &magic ) menuitem "Switch Context" ( PRIVATE &nAddress &nAddress=ADDRESS.OFFSET(TRACK.ADDRESS()) Register.TASK &nAddress ) separator menuitem "Add to Stack Cov" ( PRIVATE &nAddress &nAddress=ADDRESS.OFFSET(TRACK.ADDRESS()) TASK.STacK.ADD &nAddress ) menuitem "Rm from Stack Cov" ( PRIVATE &nAddress &nAddress=ADDRESS.OFFSET(TRACK.ADDRESS()) TASK.STacK.RM &nAddress ) separator menuitem "Dump thread entry" ( PRIVATE &address &address=track.address() Data.dump &address /Long /dialog ) ) menu "task.p" ( default menuitem "Display detailed" ( PRIVATE &magic &magic=address.offset(track.address()) TASK.Process &magic ) menuitem "Display process struct" ( PRIVATE &address &address=track.address() Var.View %Open %String (posix_proc_t*)(&address) ) menuitem "Dump process entry" ( PRIVATE &address &address=track.address() Data.dump &address /Long /dialog ) ) )