blob: 002b9db941481eb58144c04e724feacddaa81d05 [file] [log] [blame]
; Linux specific menu
add
menu
(
popup "&Linux"
(
default
menuitem "Display &Processes" "TASK.Process"
menuitem "Display &ps-like" "TASK.PS"
menuitem "Display &Tasks" "TASK.DTask"
menuitem "Display &Modules" "TASK.MODule"
popup "Display &File System"
(
menuitem "Display FS Types" "TASK.FS.Types"
menuitem "Display Mount Points" "TASK.FS.Mount"
menuitem "Display Mounted Devices" "TASK.FS.MountDevs"
menuitem "Display /proc" "TASK.FS.PROC"
menuitem "Display /sys" "TASK.FS.SYS"
)
separator
popup "&Process Debugging"
(
menuitem "&Load Symbols..."
(
dialog
(
header "TASK.sYmbol.LOAD"
pos 0. 0. 30. 3.
box "Process name"
pos 1. 1. 20. 1.
procl: defedit "" ""
pos 22. 1. 7. 1.
button "Browse..."
(
dialog.file "*"
entry %line &file
dialog.set procl "&file"
)
pos 6. 3. 7. 1.
defbutton "Ok"
(
local &procl &cwd
&procl=dialog.string(procl)
TASK.sYmbol.LOAD "&procl"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "&Delete Symbols..."
(
dialog
(
header "TASK.sYmbol.DELete"
pos 0. 0. 30. 3.
box "Process name"
pos 1. 1. 20. 1.
procd: defedit "" ""
pos 22. 1. 7. 1.
button "Browse..."
(
dialog.file "*"
entry %line &file
dialog.set procd "&file"
)
pos 6. 3. 7. 1.
defbutton "Ok"
(
local &procd
&procd=dialog.string(procd)
TASK.sYmbol.DELete "&procd"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "Debug Process on main..."
(
&cpufamily=string.lwr(cpufamily())
do ~~/demo/&cpufamily/kernel/linux/app_debug /dialog
)
addhere
popup "&Watch Processes"
(
menuitem "&Add..."
(
dialog
(
header "TASK.Watch.Add"
pos 0. 0. 24. 3.
box "Process name"
pos 1. 1. 22. 1.
wproca: defedit "" ""
pos 2. 3. 7. 1.
defbutton "Ok"
(
local &wproca
&wproca=dialog.string(wproca)
TASK.Watch.View "&wproca"
dialog.end
)
pos 15. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "&Remove..."
(
dialog
(
header "TASK.Watch.DELete"
pos 0. 0. 24. 3.
box "Process name"
pos 1. 1. 22. 1.
wprocd: defedit "" ""
pos 2. 3. 7. 1.
defbutton "Ok"
(
local &wprocd
&wprocd=dialog.string(wprocd)
TASK.Watch.DELete "&wprocd"
dialog.end
)
pos 15. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
)
separator
menuitem "Scan Process MMU Pages..."
(
dialog
(
header "MMU.SCAN TaskPageTable"
pos 0. 0. 24. 3.
box "Process name"
pos 1. 1. 22. 1.
wproca: defedit "" ""
pos 2. 3. 7. 1.
defbutton "Ok"
(
local &wproca
&wproca=dialog.string(wproca)
MMU.SCAN TaskPageTable "&wproca"
dialog.end
)
pos 15. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "Scan All MMU Tables" "MMU.SCAN.ALL"
;separator
;menuitem "Help Process Debugging" "HELP __RTOS_LINUX__S_User_Processes"
)
popup "&Module Debugging"
(
menuitem "&Load Symbols..."
(
dialog
(
header "TASK.sYmbol.LOADMod"
pos 0. 0. 30. 3.
box "Module name"
pos 1. 1. 20. 1.
modl: defedit "" ""
pos 22. 1. 7. 1.
button "Browse..."
(
dialog.file "*.ko"
entry %line &file
dialog.set modl "&file"
)
pos 6. 3. 7. 1.
defbutton "Ok"
(
local &modl
&modl=dialog.string(modl)
TASK.sYmbol.LOADMod "&modl"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "&Delete Symbols..."
(
dialog
(
header "TASK.sYmbol.DELeteMod"
pos 0. 0. 30. 3.
box "Module name"
pos 1. 1. 20. 1.
modd: defedit "" ""
pos 22. 1. 7. 1.
button "Browse..."
(
dialog.file "*.ko"
entry %line &file
dialog.set modd "&file"
)
pos 6. 3. 7. 1.
defbutton "Ok"
(
local &modd
&modd=dialog.string(modd)
TASK.sYmbol.DELeteMod "&modd"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "Debug Module on init..."
(
&cpufamily=string.lwr(cpufamily())
do ~~/demo/&cpufamily/kernel/linux/mod_debug /dialog
)
separator
menuitem "Scan All MMU Tables" "MMU.SCAN.ALL"
)
popup "&Library Debugging"
(
menuitem "&Load Symbols..."
(
dialog
(
header "TASK.sYmbol.LOADLib"
pos 0. 0. 30. 3.
box "Process name"
pos 1. 1. 28. 1.
libpl: defedit "" ""
pos 0. 3. 30. 3.
box "Library name"
pos 1. 4. 20. 1.
libll: defedit "" ""
pos 22. 4. 7. 1.
button "Browse..."
(
dialog.file "*.so*"
entry %line &file
dialog.set libll "&file"
)
pos 6. 6. 7. 1.
defbutton "Ok"
(
local &libpl &libll
&libpl=dialog.string(libpl)
&libll=dialog.string(libll)
TASK.sYmbol.LOADLib "&libpl" "&libll"
dialog.end
)
pos 17. 6. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "&Delete Symbols..."
(
dialog
(
header "TASK.sYmbol.DELeteLib"
pos 0. 0. 30. 3.
box "Process name"
pos 1. 1. 28. 1.
libpd: defedit "" ""
pos 0. 3. 30. 3.
box "Library name"
pos 1. 4. 20. 1.
libld: defedit "" ""
pos 22. 4. 7. 1.
button "Browse..."
(
dialog.file "*.so*"
entry %line &file
dialog.set libld "&file"
)
pos 6. 6. 7. 1.
defbutton "Ok"
(
local &libpd &libld
&libpd=dialog.string(libpd)
&libld=dialog.string(libld)
TASK.sYmbol.DELeteLib "&libpd" "&libld"
dialog.end
)
pos 17. 6. 7. 1.
button "Cancel" "dialog.end"
)
)
separator
menuitem "Scan Process MMU Pages..."
(
dialog
(
header "MMU.SCAN TaskPageTable"
pos 0. 0. 24. 3.
box "Process name"
pos 1. 1. 22. 1.
wproca: defedit "" ""
pos 2. 3. 7. 1.
defbutton "Ok"
(
local &wproca
&wproca=dialog.string(wproca)
MMU.SCAN TaskPageTable "&wproca"
dialog.end
)
pos 15. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "Scan All MMU Tables" "MMU.SCAN.ALL"
)
separator
popup "Symbol &Autoloader"
(
menuitem "List Components" "sYmbol.AutoLoad.List"
menuitem "Check Now!" "sYmbol.AutoLoad.CHECK"
menuitem "Set Components Checked"
(
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
)
mod: checkbox "Module (Modules)"
(
if dialog.boolean(mod)
TASK.sYmbol.Option AutoLoad Module
else
TASK.sYmbol.Option AutoLoad NoModule
)
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"
)
)
dialog.set proc ((task.y.o(autoload)&0x1)!=0)
dialog.set mod ((task.y.o(autoload)&0x4)!=0)
dialog.set lib ((task.y.o(autoload)&0x2)!=0)
dialog.set clib ((task.y.o(autoload)&0x8)!=0)
)
separator
menuitem "Set Loader Script"
(
dialog
(
header "sYmbol.AutoLoad.CHECKLINUX"
pos 0. 0. 40. 3.
box "autoload batch script"
pos 1. 1. 30. 1
cmmfile: edit "autoload.cmm" ""
pos 32. 1. 7. 1.
button "Browse..."
(
dialog.file "*.cmm"
entry %line &file
dialog.set cmmfile "&file"
)
pos 1. 3. 16. 1.
checkon: checkbox "automatic check" ""
pos 4. 4.5 8.
defbutton "Ok"
(
local &log &cmm
&cmm=dialog.string(cmmfile)
sYmbol.AutoLoad.CHECKLINUX "do &cmm "
sYmbol.AutoLoad.CHECK ; trigger check manually
if dialog.boolean(checkon)
sYmbol.AutoLoad.CHECK ON ; automatic check enabled
else
sYmbol.AutoLoad.CHECK OFF ; automatic check disabled
dialog.end
)
pos 16. 4.5 8.
button "Cancel" "dialog.end"
pos 28. 4.5 8.
button "Help" "HELP __RTOS_LINUX_S_Y_ALOAD"
)
)
menuitem "Set Target Root Path"
(
dialog
(
header "TASK.sYmbol.Option ROOTPATH"
pos 0. 0. 40. 3.
box "target root path on host"
pos 1. 1. 30. 1
rootdir: edit "" ""
pos 32. 1. 7. 1.
button "Browse..."
(
dialog.dir "*"
entry %line &dir
dialog.set rootdir "&dir"
)
pos 4. 3.5 8.
defbutton "Ok"
(
local &dir
&dir=dialog.string(rootdir)
TASK.sYmbol.Option ROOTPATH "&dir"
dialog.end
)
pos 16. 3.5 8.
button "Cancel" "dialog.end"
pos 28. 3.5 8.
button "Help" "HELP __RTOS_LINUX__TASK_Y_O_ROOTPATH"
)
)
separator
menuitem "Symbol Autoloader Help" "HELP __RTOS_LINUX_S_Y_ALOAD"
)
separator
menuitem "&Linux Terminal"
(
if !window.name(term)
(
winpos ,,,,,, term
TERM
)
else
wintop term
)
menuitem "Configure Terminal..."
(
if window.name(term)
dialog.ok "Please close terminal window first!"
else
(
dialog
(
header "TERM.Protocol"
pos 0. 0. 9.
tp.be: choosebox "BufferE"
(
dialog.disable tp.com.dev
dialog.disable tp.com.bd
dialog.enable tp.be.out
dialog.enable tp.be.in
)
pos 10. 0. 5.
text "out:"
pos 15. 0. 6.
tp.be.out: edit "T32OUTBUF" ""
pos 23. 0. 6.
text "in:"
pos 29. 0. 6.
tp.be.in: edit "T32INBUF" ""
pos 0. 1. 9.
tp.dcc: choosebox "DCC"
(
dialog.disable tp.com.dev
dialog.disable tp.com.bd
dialog.disable tp.be.out
dialog.disable tp.be.in
)
pos 0. 2. 9.
tp.com: choosebox "COM"
(
dialog.disable tp.be.out
dialog.disable tp.be.in
dialog.enable tp.com.dev
dialog.enable tp.com.bd
)
pos 10. 2. 5.
text "device:"
pos 15. 2. 6.
tp.com.dev: edit "COM1" ""
pos 23. 2. 6.
text "baudrate:"
pos 29. 2. 6.
tp.com.bd: edit "115200." ""
pos 9. 3.5 7.
defbutton "Ok"
(
&tpbeout=dialog.string(tp.be.out)
&tpbein=dialog.string(tp.be.in)
&tpcomdev=dialog.string(tp.com.dev)
&tpcombd=dialog.string(tp.com.bd)
if dialog.boolean(tp.be)
TERM.METHOD BufferE &tpbeout &tpbein
else if dialog.boolean(tp.dcc)
TERM.METHOD DCC
else if dialog.boolean(tp.com)
TERM.METHOD COM &tpcomdev &tpcombd 8 NONE 1STOP NONE
dialog.end
)
pos 19. 3.5 7.
button "Cancel" "dialog.end"
)
dialog.disable tp.be.out
dialog.disable tp.be.in
dialog.disable tp.com.dev
dialog.disable tp.com.bd
if cpufamily()!="ARM"
dialog.disable tp.dcc
)
)
;separator
;popup "&Stack Coverage"
;(
; menuitem "&List Stacks"
; (
; if icd()||simulator()
; TASK.STacK.PATtern 0
; TASK.STacK
; )
; menuitem "Add Task" "TASK.STacK.ADD"
; menuitem "Remove Task" "TASK.STacK.ReMove"
; enable ice()||fire()
; menuitem "&Reset Coverage" "TASK.STacK.RESet"
;)
separator
menuitem "Help Linux Awareness" "HELP __RTOS_LINUX_S_"
)
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
)
if (ice()||fire())&&!a.mode.flow()
(
Analyzer.ReProgram
(
Sample.Enable if AlphaBreak&&Write
)
Break.Delete /Alpha
Break.Set task.config(magic)++(task.config(magicsize)-1) /Alpha
)
if a.mode.flow()
(
Break.Delete /TraceEnable
Break.Set task.config(magic) /TraceEnable
)
)
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 (ice()||fire())&&!a.mode.flow()
(
if a.config.hac()
(
Analyzer.ReProgram
(
Sample.Enable if AlphaBreak
Sample.Enable if BetaBreak
Mark.A if AlphaBreak
Mark.B if BetaBreak
)
)
else
(
Analyzer.ReProgram
(
Sample.Enable if AlphaBreak||BetaBreak
Mark.A if AlphaBreak
Mark.B if BetaBreak
)
)
Break.Delete /Alpha /Beta /Charly
Break.SetFunc
Break.Set task.config(magic)++(task.config(magicsize)-1) /Alpha
)
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
)
if (ice()||fire())&&!a.mode.flow()
(
Analyzer.ReProgram
(
Sample.Enable if AlphaBreak&&Write
)
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 "Linux Awareness Manual" "HELP __RTOS_LINUX_S_"
)
)
menu "task.dt"
(
default
menuitem "Display detailed"
(
&address=address.offset(track.address())
TASK.DTask &address
)
menuitem "Display task struct"
(
&address=task.proc.tcb(address.offset(track.address()))
Var.View %m %s (struct task_struct)*&address
)
separator
menuitem "Display Stack Frame" "Var.Frame /Locals /Caller /Task track.address()"
menuitem "Display Registers" "Register /Task track.address()"
menuitem "Switch Context" "Register.TASK track.address()"
separator
menuitem "Load Process Symbols" "TASK.sYmbol.LOAD track.address()"
menuitem "Delete Process Symbols" "TASK.sYmbol.DELete track.address()"
menuitem "Add Libraries to Symbol Autoloader"
(
TASK.sYmbol.Option AutoLoad ProcLib track.address()
sYmbol.AutoLOAD.CHECK
)
menuitem "Add to Watched Processes"
(
&address=address.offset(track.address())
TASK.Watch.View &address
)
menuitem "Delete from Watched Processes" "TASK.Watch.DELete track.address()"
;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 "Scan MMU Pages"
(
&address=address.offset(track.address())
MMU.SCAN TaskPageTable &address
)
separator
menuitem "Dump task entry"
(
&address=task.proc.tcb(address.offset(track.address()))
Data.dump &address /l /dialog
)
separator
menuitem "Kill task"
(
local &rkmagic &rktname
&rkmagic=task.proc.tcb(address.offset(track.address()))
&rktname=task.proc.name(&rkmagic)
dialog.yesno "Really kill task &rktname?"
entry &yn
if &yn
(
var.set ((struct task_struct)*&rkmagic).pending.signal.sig[0]=0x100
print "Signal SIGKILL sent to task &rktname"
)
)
separator
enable t.method.analyzer()
menuitem "Trace this task"
(
local &magic
if run()
break
&magic=address.offset(track.address())
&sid=task.proc.magic2sid(&magic)
if etm.contextcomp()>0
(
TrOnchip.ContextID ON
Break.Set &sid:0--0xffffffff /Program /TraceEnable /TASK &magic
)
else
(
Break.Set task.config(magic) /Write /Data &magic /TraceON
Break.Set task.config(magic) /Write /Data !&magic /TraceOFF
)
)
)
menu "task.mod"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.MODule &address
;)
menuitem "Display module struct"
(
&address=task.mod.mcb(address.offset(track.address()))
Var.View %m %s (struct module)*&address
)
separator
menuitem "Load Module Symbols" "TASK.sYmbol.LOADMod track.address()"
menuitem "Delete Module Symbols" "TASK.sYmbol.DELeteMod track.address()"
separator
menuitem "Dump module entry"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
)
menu "task.fs.t"
(
default
menuitem "Display detailed"
(
&address=address.offset(track.address())
TASK.FS.Types &address
)
menuitem "Display type struct"
(
&address=address.offset(track.address())
Var.View %m %s (struct file_system_type)*&address
)
separator
menuitem "Dump type entry"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
)
menu "task.fs.md"
(
default
menuitem "Display detailed"
(
&address=address.offset(track.address())
TASK.FS.MountDevs &address
)
menuitem "Display superblock struct"
(
&address=address.offset(track.address())
Var.View %m %s (struct super_block)*&address
)
separator
menuitem "Dump superblock entry"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
)
menu "task.fs.proc"
(
;default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.FS.PROC &address
;)
menuitem "Display proc struct"
(
&address=address.offset(track.address())
Var.View %m %s (struct proc_dir_entry)*&address
)
separator
menuitem "Dump proc dir entry"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
)
menu "task.fs.m"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.FS.Mount &address
;)
menuitem "Display mount struct"
(
&address=address.offset(track.address())
Var.View %o %h %s (struct vfsmount)*&address
)
separator
menuitem "Dump mount entry"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
)
menu "task.lib"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.DTask &address
;)
menuitem "Display Library struct"
(
&address=address.offset(track.address())
Var.View %m %s (struct vm_area_struct)*&address
)
separator
menuitem "Load Library Symbols" "TASK.sYmbol.LOADLib track.string() track.address()"
menuitem "Delete Library Symbols" "TASK.sYmbol.DELeteLib track.string() track.address()"
separator
menuitem "Dump Library entry"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
)
menu "task.w"
(
default
menuitem "Display Process"
(
&address=address.offset(track.address())
TASK.DTask &address
)
menuitem "Delete from List"
(
&name=track.string()
TASK.Watch.DELete "&name"
)
)