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