487 lines
10 KiB
Plaintext
487 lines
10 KiB
Plaintext
; --------------------------------------------------------------------------------
|
|
; @Title: RTXC Quadros awareness menu
|
|
; @Description: -
|
|
; @Author: DIE
|
|
; @Copyright: (c) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; --------------------------------------------------------------------------------
|
|
; $Id: quadros.m 7861 2022-07-29 13:45:42Z amerkle $
|
|
|
|
|
|
NAME "TASK.RTXCQUADROS"
|
|
|
|
IF !MENU.EXIST("TASK.RTXCQUADROS")
|
|
(
|
|
|
|
add
|
|
menu
|
|
(
|
|
popup "RTXC Quadros"
|
|
(
|
|
default
|
|
menuitem "Display &Tasks" "TASK.TaSK"
|
|
menuitem "Display &Semaphores" "TASK.SEMaphore"
|
|
menuitem "Display &Mailboxes" "TASK.MailBoX"
|
|
menuitem "Display &Partitions" "TASK.PaRTition"
|
|
menuitem "Display &Queues" "TASK.QUEue"
|
|
menuitem "Display M&utexes" "TASK.MuTeX"
|
|
menuitem "Display T&hreads" "TASK.THRead"
|
|
menuitem "Display &Levels" "TASK.LeVeL"
|
|
menuitem "Display P&ipes" "TASK.PIPe"
|
|
menuitem "Display &Event Sources" "TASK.EVenT"
|
|
menuitem "Display &Counters" "TASK.CouNTer"
|
|
menuitem "Display &Alarms" "TASK.ALaRm"
|
|
menuitem "Display E&xceptions" "TASK.EXCeption"
|
|
separator
|
|
popup "&Stack Coverage"
|
|
(
|
|
menuitem "&List Stacks" "TASK.STacK"
|
|
menuitem "Add Task" "TASK.STacK.ADD"
|
|
menuitem "Remove Task" "TASK.STacK.ReMove"
|
|
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()
|
|
(
|
|
if cpufamily()!="SC100"
|
|
(
|
|
Break.Delete /TraceEnable
|
|
Break.Set task.config(magic) /TraceEnable
|
|
)
|
|
else
|
|
(
|
|
Break.Delete /TraceData
|
|
Break.Set task.config(magic) /TraceData
|
|
)
|
|
)
|
|
)
|
|
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 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 "Task &Status"
|
|
(
|
|
menuitem "&Prepare"
|
|
(
|
|
if t.method.analyzer()
|
|
(
|
|
Analyzer.AutoInit on
|
|
)
|
|
Break.Delete /Alpha
|
|
Break.Set task.config(magic)++(task.config(magicsize)-1) /Alpha
|
|
;TASK.TASKState
|
|
)
|
|
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 "&Help"
|
|
(
|
|
MENUITEM "[:manual]OS Awareness Manual Quadros" "HELP __RTOS_QUADROS_"
|
|
)
|
|
)
|
|
|
|
|
|
menu "task.tsk"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.TaSK &nAddress
|
|
)
|
|
menuitem "Display task struct"
|
|
(
|
|
PRIVATE &pAddress &sStruct
|
|
&pAddress=TRACK.ADDRESS()
|
|
&sStruct=task.task.struct()
|
|
Var.View %Open (&(sStruct)*)(&pAddress)
|
|
)
|
|
separator
|
|
menuitem "Display Stack Frame"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
Var.Frame /Locals /Caller /Task &nAddress
|
|
)
|
|
menuitem "Switch context"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
Register.TASK &nAddress
|
|
)
|
|
separator
|
|
menuitem "Add to Stack Cov" "TASK.STK.ADD address.offset(track.address())"
|
|
menuitem "Rm from Stack Cov" "TASK.STK.RM address.offset(track.address())"
|
|
separator
|
|
menuitem "Dump task entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.sem"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.SEMaphore &nAddress
|
|
)
|
|
menuitem "Display semaphore struct"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Var.View %m %s (struct _sheader*)(&pAddress)
|
|
)
|
|
separator
|
|
menuitem "Dump semaphore entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.mbx"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.MailBoX &nAddress
|
|
)
|
|
menuitem "Display mailbox struct"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Var.View %m %s (struct _mheader*)(&pAddress)
|
|
)
|
|
separator
|
|
menuitem "Dump mailbox entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.prt"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.PaRTition &nAddress
|
|
)
|
|
menuitem "Display partition struct"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Var.View %m %s (struct _pheader*)(&pAddress)
|
|
)
|
|
separator
|
|
menuitem "Dump partition entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.que"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.QUEue &nAddress
|
|
)
|
|
menuitem "Display queue struct"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Var.View %m %s (struct _qheader*)(&pAddress)
|
|
)
|
|
separator
|
|
menuitem "Dump queue entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.mtx"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.MuTeX &nAddress
|
|
)
|
|
menuitem "Display mutex struct"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Var.View %m %s (struct _uheader*)(&pAddress)
|
|
)
|
|
separator
|
|
menuitem "Dump mutex entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.thr"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.THRead &nAddress
|
|
)
|
|
menuitem "Display thread struct"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
if cpufamily()!="C5000"
|
|
Var.View %m %s (struct _tcheader*)(&pAddress)
|
|
else
|
|
Var.View %m %s (TCHEADER*)(&pAddress)
|
|
)
|
|
separator
|
|
menuitem "Dump thread entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.lvl"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.LeVeL &nAddress
|
|
)
|
|
menuitem "Display level struct"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
if cpufamily()!="C5000"
|
|
Var.View %m %s (struct _lcheader*)(&pAddress)
|
|
else
|
|
Var.View %m %s (LCHEADER*)(&pAddress)
|
|
)
|
|
separator
|
|
menuitem "Dump level entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.exc"
|
|
(
|
|
default
|
|
menuitem "Display exception struct"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
if cpufamily()!="C5000"
|
|
Var.View %m %s (struct _eheader*)(&pAddress)
|
|
else
|
|
Var.View %m %s (EHEADER*)(&pAddress)
|
|
)
|
|
;separator
|
|
menuitem "Dump exception entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.evt"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.EVenT &nAddress
|
|
)
|
|
menuitem "Display event source struct"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
if cpufamily()!="C5000"
|
|
Var.View %m %s (struct _scheader*)(&pAddress)
|
|
else
|
|
Var.View %m %s (SCHEADER*)(&pAddress)
|
|
)
|
|
separator
|
|
menuitem "Dump event source entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.cnt"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.CouNTer &nAddress
|
|
)
|
|
menuitem "Display counter struct"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
if cpufamily()!="C5000"
|
|
Var.View %m %s (struct _ccheader*)(&pAddress)
|
|
else
|
|
Var.View %m %s (CCHEADER*)(&pAddress)
|
|
)
|
|
separator
|
|
menuitem "Dump counter entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.alr"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.ALaRm &nAddress
|
|
)
|
|
menuitem "Display alarm struct"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
if cpufamily()!="C5000"
|
|
Var.View %m %s (struct _acheader*)(&pAddress)
|
|
else
|
|
Var.View %m %s (ACHEADER*)(&pAddress)
|
|
)
|
|
separator
|
|
menuitem "Dump alarm entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.pip"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.PIPe &nAddress
|
|
)
|
|
menuitem "Display pipe struct"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
if cpufamily()!="C5000"
|
|
Var.View %m %s (struct _pcheader*)(&pAddress)
|
|
else
|
|
Var.View %m %s (PCHEADER*)(&pAddress)
|
|
)
|
|
separator
|
|
menuitem "Dump pipe entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
)
|