; -------------------------------------------------------------------------------- ; @Title: QXK specific menu ; @Description: - ; @Author: DIE YDA ; @Copyright: (c) 1989-2017 Lauterbach GmbH, licensed for use with TRACE32(R) only ; -------------------------------------------------------------------------------- ; $Id: qxk.m 7861 2022-07-29 13:45:42Z amerkle $ NAME "TASK.QXK" IF !MENU.EXIST("TASK.QXK") ( add menu ( POPUP "QXK" ( default menuitem "Display &Active Objects" "TASK.ActiveObj" separator menuitem "Display &Extended Threads" "TASK.EXtTHRead" menuitem "Display &Mutex" ( PRIVATE &dir &command &dir=TASK.GETDIR() &command="&dir"+"\objdialog.cmm Mutex MuTeX" Do &command ) menuitem "Display &Semaphore" ( PRIVATE &dir &command &dir=TASK.GETDIR() &command="&dir"+"\objdialog.cmm Semaphore SEMaphore" Do &command ) menuitem "Display Memory &Pools" "TASK.MEMPool" separator popup "&Stack Coverage" ( menuitem "&List Stacks" "TASK.STacK.view" menuitem "Add Task" "TASK.STacK.ADD" menuitem "Remove Task" "TASK.STacK.RM" menuitem "Reset Coverage" ( 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 a.mode.flow() ( Break.Delete /TraceEnable Break.Set C:0x1F:::task.config(magic) /TraceEnable ) ) 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 a.mode.flow() ( Break.Delete /TraceData Break.Set C:0x1F:::task.config(magic) /TraceData ) ) 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 "&Help" ( MENUITEM "[:manual]OS Awareness Manual QXK" "HELP __RTOS_QXK_" ) ) menu "task.exthr" ( default menuitem "Display task struct" ( PRIVATE &address &address=track.address() Var.View %Open %String (QXThread *)(&address) ) separator menuitem "Display Stack Frame" ( PRIVATE &address &address=address.offset(track.address()) Var.Frame /Locals /Caller /Task &address ) menuitem "Display Registers" ( PRIVATE &address &address=address.offset(track.address()) Register /Task &address ) menuitem "Switch Context" "Register.TASK address.offset(track.address())" separator menuitem "Dump task entry" ( PRIVATE &address &address=address.offset(track.address()) Data.dump &address /l /dialog ) ) menu "task.sem" ( default menuitem "Display Semaphore struct" ( PRIVATE &address &address=track.address() Var.View %Open %String (QXSemaphore *)(&address) ) separator menuitem "Dump Semaphore entry" ( PRIVATE &address &address=address.offset(track.address()) Data.dump &address /l /dialog ) ) menu "task.mtx" ( default menuitem "Display Mutex struct" ( PRIVATE &address &address=track.address() Var.View %Open %String (QXMutex *)(&address) ) separator menuitem "Dump Mutex entry" ( PRIVATE &address &address=address.offset(track.address()) Data.dump &address /l /dialog ) ) menu "task.ao" ( default menuitem "Display Active Object struct" ( PRIVATE &address &address=track.address() Var.View %Open %String (QActive *)(&address) ) separator menuitem "Dump Active Object entry" ( PRIVATE &address &address=address.offset(track.address()) Data.dump &address /l /dialog ) ) menu "task.memp" ( default menuitem "View mem pool struct" ( PRIVATE &magic &magic=address.offset(track.address()) Var.View %Open (QMPool)*&magic ) menuitem "Dump mem pool struct" ( PRIVATE &magic &magic=address.offset(track.address()) Data.dump &magic /Long /dialog ) ) )