; -------------------------------------------------------------------------------- ; @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 ) ) )