399 lines
8.9 KiB
Plaintext
399 lines
8.9 KiB
Plaintext
; --------------------------------------------------------------------------------
|
|
; @Title: embOS specific menu
|
|
; @Description: -
|
|
; @Author: DIE
|
|
; @Copyright: (c) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; --------------------------------------------------------------------------------
|
|
; $Id: embos.m 9390 2023-08-21 14:18:18Z rdienstbeck $
|
|
|
|
NAME "TASK.EMBOS"
|
|
|
|
IF !MENU.EXIST("TASK.EMBOS")
|
|
(
|
|
add
|
|
menu
|
|
(
|
|
popup "embOS"
|
|
(
|
|
default
|
|
menuitem "Display Tasks" "TASK.TaskList"
|
|
menuitem "Display Timers" "TASK.TIMer"
|
|
IF TASK.AVAIL(EVENT)!=0
|
|
(
|
|
menuitem "Display Events"
|
|
(
|
|
if TASK.AVAIL(EVENTLIST)!=0
|
|
TASK.EVenT
|
|
else
|
|
sYmbol.Browse *event* /Click "Task.EVenT *" /Delete
|
|
)
|
|
)
|
|
IF TASK.AVAIL(MUTEXLIST)!=0
|
|
(
|
|
menuitem "Display Mutexes" "TASK.MuTeX"
|
|
)
|
|
IF TASK.AVAIL(RSEMA)!=0
|
|
(
|
|
menuitem "Display RSemas"
|
|
(
|
|
if TASK.AVAIL(RSEMALIST)!=0
|
|
TASK.RSema
|
|
else
|
|
sYmbol.Browse *rsema* /Click "Task.RSema *" /Delete
|
|
)
|
|
)
|
|
IF TASK.AVAIL(CSEMA)!=0
|
|
(
|
|
menuitem "Display CSemas"
|
|
(
|
|
if TASK.AVAIL(CSEMALIST)!=0
|
|
TASK.CSema
|
|
else
|
|
sYmbol.Browse *csema* /Click "Task.CSema *" /Delete
|
|
)
|
|
)
|
|
IF TASK.AVAIL(SEMAPHORE)!=0
|
|
(
|
|
menuitem "Display Semaphores"
|
|
(
|
|
if TASK.AVAIL(SEMAPHORELIST)!=0
|
|
TASK.SEMAphore
|
|
else
|
|
sYmbol.Browse *sema* /Click "Task.SEMAphore *" /Delete
|
|
)
|
|
)
|
|
IF TASK.AVAIL(RWLOCK)!=0
|
|
(
|
|
menuitem "Display RW Locks"
|
|
(
|
|
if TASK.AVAIL(RWLOCKLIST)!=0
|
|
TASK.RWLock
|
|
else
|
|
sYmbol.Browse *rwl* /Click "Task.RWLock *" /Delete
|
|
)
|
|
)
|
|
menuitem "Display &Mailbox"
|
|
(
|
|
if TASK.AVAIL(MAILBOXLIST)!=0
|
|
TASK.MailBox
|
|
else
|
|
sYmbol.Browse *mailbox* /Click "Task.MailBox *" /Delete
|
|
)
|
|
IF TASK.AVAIL(QUEUE)!=0
|
|
(
|
|
menuitem "Display Queues"
|
|
(
|
|
if TASK.AVAIL(QUEUELIST)!=0
|
|
TASK.Queue
|
|
else
|
|
sYmbol.Browse *queue* /Click "Task.Queue *" /Delete
|
|
)
|
|
)
|
|
separator
|
|
popup "&Stack Coverage"
|
|
(
|
|
menuitem "List Stacks" "TASK.STacK"
|
|
menuitem "Add Task to Cov" "TASK.STacK.ADD"
|
|
menuitem "Remove Task from Cov" "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 "&List"
|
|
(
|
|
separator
|
|
menuitem "&Task Switches" "Trace.List List.TASK"
|
|
menuitem "Default and Tasks" "Trace.List List.TASK def"
|
|
)
|
|
)
|
|
popup "Perf"
|
|
(
|
|
separator
|
|
popup "&Task Runtime"
|
|
(
|
|
menuitem "&Prepare"
|
|
(
|
|
if t.method.analyzer()
|
|
(
|
|
Analyzer.AutoInit on
|
|
)
|
|
Break.Delete /Alpha
|
|
Break.Set task.config(magic)++(task.config(magicsize)-1) /Alpha
|
|
)
|
|
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
|
|
)
|
|
Break.Delete /Alpha /Beta /Charly
|
|
Break.SetFunc /PreFetch
|
|
Break.Set task.config(magic)++(task.config(magicsize)-1) /Alpha
|
|
)
|
|
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 "embOS RTOS Debugger Manual" "HELP __RTOS_EMBOS_"
|
|
)
|
|
)
|
|
|
|
|
|
menu "task.tl"
|
|
(
|
|
default
|
|
menuitem "Display Detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.TaskList &nAddress
|
|
)
|
|
menuitem "Display TCB"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=address.offset(track.address())
|
|
Var.View %Open %String (OS_TASK *)&nAddress
|
|
)
|
|
separator
|
|
menuitem "Display Stack Frame"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=address.offset(track.address())
|
|
Frame /Locals /Caller /Task &nAddress
|
|
)
|
|
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 Task Entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.tim"
|
|
(
|
|
default
|
|
;menuitem "Display Detailed"
|
|
;(
|
|
; PRIVATE &nAddress
|
|
; &nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
; TASK.TIMER &nAddress
|
|
;)
|
|
menuitem "Display Timer Struct"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=address.offset(track.address())
|
|
Var.View %Open %String (OS_TIMER *)&nAddress
|
|
)
|
|
menuitem "Dump Timer 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 Struct"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=address.offset(track.address())
|
|
Var.View %Open %String (OS_EVENT *)&nAddress
|
|
)
|
|
menuitem "Dump Event 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 &nAddress
|
|
&nAddress=address.offset(track.address())
|
|
Var.View %Open %String (OS_MUTEX *)&nAddress
|
|
)
|
|
menuitem "Dump Mutex Entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.sema"
|
|
(
|
|
default
|
|
;menuitem "Display Detailed"
|
|
;(
|
|
; PRIVATE &nAddress
|
|
; &nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
; TASK.SEMAphore &nAddress
|
|
;)
|
|
menuitem "Display Semaphore Struct"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=address.offset(track.address())
|
|
Var.View %Open %String (OS_SEMAPHORE *)&nAddress
|
|
)
|
|
menuitem "Dump Semaphore Entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.rwl"
|
|
(
|
|
default
|
|
;menuitem "Display Detailed"
|
|
;(
|
|
; PRIVATE &nAddress
|
|
; &nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
; TASK.RWLock &nAddress
|
|
;)
|
|
menuitem "Display RW Lock Struct"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=address.offset(track.address())
|
|
Var.View %Open %String (OS_RWLOCK *)&nAddress
|
|
)
|
|
menuitem "Dump RW Lock Entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.mb"
|
|
(
|
|
default
|
|
menuitem "Display Detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.MailBox &nAddress
|
|
)
|
|
menuitem "Display Mailbox Struct"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=address.offset(track.address())
|
|
Var.View %Open %String (OS_MAILBOX *)&nAddress
|
|
)
|
|
menuitem "Dump Mailbox Entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
menu "task.q"
|
|
(
|
|
default
|
|
menuitem "Display Detailed"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=ADDRESS.OFFSET(TRACK.ADDRESS())
|
|
TASK.Queue &nAddress
|
|
)
|
|
menuitem "Display Queue Struct"
|
|
(
|
|
PRIVATE &nAddress
|
|
&nAddress=address.offset(track.address())
|
|
Var.View %Open %String (OS_QUEUE *)&nAddress
|
|
)
|
|
menuitem "Dump Queue Entry"
|
|
(
|
|
PRIVATE &pAddress
|
|
&pAddress=TRACK.ADDRESS()
|
|
Data.dump &pAddress /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
)
|