437 lines
11 KiB
Plaintext
437 lines
11 KiB
Plaintext
; --------------------------------------------------------------------------------
|
|
; @Title: Menu File for TRACE32 LynxOS Awareness
|
|
; @Description: -
|
|
; @Keywords: LynxOS menu awareness
|
|
; @Author: DIE
|
|
; @Copyright: (c) 1989-2024 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; --------------------------------------------------------------------------------
|
|
; $Id: lynx.m 10155 2024-05-28 13:02:40Z rdienstbeck $
|
|
|
|
NAME "TASK.LYNXOS"
|
|
|
|
IF !MENU.EXIST("TASK.LYNXOS")
|
|
(
|
|
|
|
add
|
|
menu
|
|
(
|
|
popup "LynxOS"
|
|
(
|
|
default
|
|
menuitem "Display &Processes" "TASK.Process"
|
|
menuitem "Display &Threads" "TASK.Thread"
|
|
menuitem "Display &Drivers" "TASK.Driver"
|
|
separator
|
|
popup "&Process Debugging"
|
|
(
|
|
menuitem "[:symbols]&Load Symbols..."
|
|
(
|
|
dialog
|
|
(
|
|
header "TASK.sYmbol.LOAD"
|
|
pos 0. 0. 26. 3.
|
|
box "Process name"
|
|
pos 1. 1. 16. 1.
|
|
procl: defedit "" ""
|
|
pos 18. 1. 7. 1.
|
|
button "Browse..."
|
|
(
|
|
PRIVATE &file
|
|
dialog.file "*"
|
|
ENTRY %line &file
|
|
dialog.set procl "&file"
|
|
)
|
|
pos 2. 3. 7. 1.
|
|
defbutton "Ok"
|
|
(
|
|
PRIVATE &procl
|
|
&procl=dialog.string(procl)
|
|
TASK.sYmbol.LOAD "&procl"
|
|
dialog.end
|
|
)
|
|
pos 17. 3. 7. 1.
|
|
button "Cancel" "DIALOG.END"
|
|
)
|
|
)
|
|
menuitem "[:symbols]&Delete Symbols..."
|
|
(
|
|
dialog
|
|
(
|
|
header "TASK.sYmbol.DELete"
|
|
pos 0. 0. 26. 3.
|
|
box "Process name"
|
|
pos 1. 1. 16. 1.
|
|
procd: defedit "" ""
|
|
pos 18. 1. 7. 1.
|
|
button "Browse..."
|
|
(
|
|
PRIVATE &file
|
|
dialog.file "*"
|
|
ENTRY %line &file
|
|
dialog.set procd "&file"
|
|
)
|
|
pos 2. 3. 7. 1.
|
|
defbutton "Ok"
|
|
(
|
|
PRIVATE &procd
|
|
&procd=dialog.string(procd)
|
|
TASK.sYmbol.DELete "&procd"
|
|
dialog.end
|
|
)
|
|
pos 17. 3. 7. 1.
|
|
button "Cancel" "dialog.end"
|
|
)
|
|
)
|
|
popup "&Watch Processes"
|
|
(
|
|
menuitem "[:plus]&Add..."
|
|
(
|
|
dialog
|
|
(
|
|
header "Add Process to Watch"
|
|
pos 0. 0. 24. 3.
|
|
box "Process name"
|
|
pos 1. 1. 22. 1.
|
|
wproca: defedit "" ""
|
|
pos 2. 3. 7. 1.
|
|
defbutton "Ok"
|
|
(
|
|
PRIVATE &wproca
|
|
&wproca=dialog.string(wproca)
|
|
TASK.Watch.View "&wproca"
|
|
dialog.end
|
|
)
|
|
pos 15. 3. 7. 1.
|
|
button "Cancel" "dialog.end"
|
|
)
|
|
)
|
|
menuitem "[:remove]&Remove..."
|
|
(
|
|
dialog
|
|
(
|
|
header "Delete Process from Watch"
|
|
pos 0. 0. 24. 3.
|
|
box "Process name"
|
|
pos 1. 1. 22. 1.
|
|
wprocd: defedit "" ""
|
|
pos 2. 3. 7. 1.
|
|
defbutton "Ok"
|
|
(
|
|
PRIVATE &wprocd
|
|
&wprocd=dialog.string(wprocd)
|
|
TASK.Watch.DELete "&wprocd"
|
|
dialog.end
|
|
)
|
|
pos 15. 3. 7. 1.
|
|
button "Cancel" "dialog.end"
|
|
)
|
|
)
|
|
)
|
|
)
|
|
separator
|
|
menuitem "Debug Driver on install..."
|
|
(
|
|
dialog
|
|
(
|
|
header "Debug Driver on install"
|
|
pos 0. 0. 24. 3.
|
|
box "Driver name (without .dldd)"
|
|
pos 1. 1. 22. 1.
|
|
ddrv: defhotedit ""
|
|
(
|
|
if dialog.string(ddrv)!=""
|
|
dialog.enable bok
|
|
else
|
|
dialog.disable bok
|
|
)
|
|
pos 2. 3. 8.
|
|
bok: defbutton "Ok"
|
|
(
|
|
PRIVATE &ddrv &script
|
|
&ddrv=dialog.string(ddrv)
|
|
&script=OS.FILE.JOINPATH(TASK.GETDIR(),"drv_debug.cmm")
|
|
DO "&script" &ddrv
|
|
dialog.end
|
|
)
|
|
pos 15. 3. 7. 1.
|
|
button "Cancel" "dialog.end"
|
|
)
|
|
)
|
|
separator
|
|
popup "S&ymbol Autoloader"
|
|
(
|
|
menuitem "[:symbols]List Components" "sYmbol.AutoLoad.List"
|
|
menuitem "[:init]Check Now!" "sYmbol.AutoLoad.CHECK"
|
|
menuitem "[:config]Config..." "sYmbol.AutoLOAD.config"
|
|
menuitem "[:objects]Components..."
|
|
(
|
|
dialog
|
|
(
|
|
header "TASK.sYmbol.Option AutoLoad"
|
|
pos 0. 0. 25.
|
|
proc: checkbox "Process (Processes)"
|
|
(
|
|
if dialog.boolean(proc)
|
|
TASK.sYmbol.Option AutoLoad Process
|
|
else
|
|
TASK.sYmbol.Option AutoLoad NoProcess
|
|
)
|
|
;lib: checkbox "Library (All Libraries)"
|
|
;(
|
|
; if dialog.boolean(lib)
|
|
; TASK.sYmbol.Option AutoLoad Library
|
|
; else
|
|
; TASK.sYmbol.Option AutoLoad NoLibrary
|
|
; dialog.set clib "FALSE"
|
|
;)
|
|
;clib: checkbox "CurrLib (Libraries of Current Process)"
|
|
;(
|
|
; if dialog.boolean(clib)
|
|
; TASK.sYmbol.Option AutoLoad CurrLib
|
|
; else
|
|
; TASK.sYmbol.Option AutoLoad NoLibrary
|
|
; dialog.set lib "FALSE"
|
|
;)
|
|
driv: checkbox "DRiVer (Drivers)"
|
|
(
|
|
if dialog.boolean(driv)
|
|
TASK.sYmbol.Option AutoLoad DRiVer
|
|
else
|
|
TASK.sYmbol.Option AutoLoad NoDRiVer
|
|
)
|
|
)
|
|
dialog.set proc ((task.y.o(autoload)&0x1)!=0)
|
|
;dialog.set lib ((task.y.o(autoload)&0x2)!=0)
|
|
;dialog.set clib ((task.y.o(autoload)&0x4)!=0)
|
|
dialog.set driv ((task.y.o(autoload)&0x8)!=0)
|
|
)
|
|
)
|
|
;separator
|
|
;popup "&Stack Coverage"
|
|
;(
|
|
; menuitem "&List Stacks"
|
|
; (
|
|
; TASK.STacK.PATtern 0xff
|
|
; TASK.STacK
|
|
; )
|
|
; menuitem "Add Thread" "TASK.STacK.ADD"
|
|
; menuitem "Remove Thread" "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 DEFault"
|
|
)
|
|
)
|
|
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
|
|
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 "[:manual]OS Awareness Manual LynxOS" "HELP __RTOS_LYNX_"
|
|
)
|
|
)
|
|
|
|
|
|
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 (struct pentry*)(&address)
|
|
)
|
|
separator
|
|
menuitem "Load Process Symbols" "TASK.sYmbol.LOAD track.address()"
|
|
menuitem "Delete Process Symbols" "TASK.sYmbol.DELete track.address()"
|
|
menuitem "Add to Watched Processes"
|
|
(
|
|
PRIVATE &magic
|
|
&magic=address.offset(track.address())
|
|
TASK.Watch.View &address
|
|
)
|
|
menuitem "Delete from Watched Processes" "TASK.Watch.DELete track.address()"
|
|
separator
|
|
menuitem "Dump process entry"
|
|
(
|
|
PRIVATE &address
|
|
&address=track.address()
|
|
Data.dump &address /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
|
|
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 (struct st_entry*)(&address)
|
|
)
|
|
separator
|
|
menuitem "Display Stack Frame"
|
|
(
|
|
PRIVATE &magic
|
|
&magic=address.offset(track.address())
|
|
Var.Frame /Locals /Caller /TASK &magic
|
|
)
|
|
menuitem "Display Registers"
|
|
(
|
|
PRIVATE &magic
|
|
&magic=address.offset(track.address())
|
|
Register /TASK &magic
|
|
)
|
|
menuitem "Switch Context"
|
|
(
|
|
PRIVATE &magic
|
|
&magic=address.offset(track.address())
|
|
Register.TASK &magic
|
|
)
|
|
;separator
|
|
;menuitem "Add to Stack Cov"
|
|
;(
|
|
; PRIVATE &thread
|
|
; &thread=address.offset(track.address())
|
|
; TASK.STacK.ADD &thread
|
|
;)
|
|
;menuitem "Rm from Stack Cov"
|
|
;(
|
|
; PRIVATE &thread
|
|
; &thread=address.offset(track.address())
|
|
; TASK.STacK.ReMove &thread
|
|
;)
|
|
separator
|
|
menuitem "Dump thread entry"
|
|
(
|
|
PRIVATE &address
|
|
&address=track.address()
|
|
Data.dump &address /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
|
|
menu "task.d"
|
|
(
|
|
default
|
|
menuitem "Display detailed"
|
|
(
|
|
PRIVATE &magic
|
|
&magic=address.offset(track.address())
|
|
TASK.Driver &magic
|
|
)
|
|
menuitem "Display driver struct"
|
|
(
|
|
PRIVATE &address
|
|
&address=track.address()
|
|
Var.View %Open %String (struct driver_entry*)&address
|
|
)
|
|
menuitem "Dump driver entry"
|
|
(
|
|
PRIVATE &address
|
|
&address=track.address()
|
|
Data.dump &address /Long /DIALOG
|
|
)
|
|
)
|
|
|
|
|
|
menu "task.w"
|
|
(
|
|
default
|
|
menuitem "Display Process"
|
|
(
|
|
PRIVATE &magic
|
|
&magic=address.offset(track.address())
|
|
TASK.Process &magic
|
|
)
|
|
menuitem "Delete from List" "TASK.Watch.DELete track.address()"
|
|
)
|
|
|
|
)
|