;@Extension.Container.Version.1 ;-- DO NOT CHANGE THE LINE ABOVE -- IF (VERSION.BUILD.BASE()<138311.) ( PRINTF %ERROR "%s: Software too old, please contact support@lauterbach.com." "AtomThreads" ENDDO ) PMACRO.EXPLICIT PRIVATE &sParamline &sPpf &sCmd &sParameters &sAccess &sAccessSpaces &sAccessMachine &sOptionAccess &sOptionAccessMisc &sName &sMachine &sArguments &nVariant PRIVATE &bTaskConfig &bExtLoad &bCleanup ENTRY &sCmd %LINE &sParamline &sParameters=STRing.SCANAndExtract("&sParamline","PARAMETERS=","") &sAccess=STRing.SCANAndExtract("&sParamline","ACCESS=","") &sAccessSpaces=STRing.SCANAndExtract("&sParamline","ACCESSSPACES=","") &sAccessMachine=STRing.SCANAndExtract("&sParamline","ACCESSMACHINE=","") &sName=STRing.SCANAndExtract("&sParamline","NAME=","") &sMachine=STRing.SCANAndExtract("&sParamline","MACHINE=","") &sArguments=STRing.SCANAndExtract("&sParamline","ARGUMENTS=","") &sParameters=STRing.Replace("&sParameters","""","",0.) IF ("&sArguments"!="") &sArguments=&sArguments IF ("&sAccess"!="") &sOptionAccess="/ACCESS &sAccess" IF ("&sAccessSpaces"!="") &sOptionAccessMisc="/ACCESSSPACES &sAccessSpaces" IF ("&sAccessMachine"!="") &sOptionAccessMisc="&(sOptionAccessMisc) /ACCESSMACHINE &sAccessMachine" &sName=STRing.Replace("&sName","""","",0.) &bTaskConfig=STRing.SCAN("task.config,ext.config",STRing.LoWeR("&sCmd"),0.)>=0. &bExtLoad=STRing.SCAN("ext.load",STRing.LoWeR("&sCmd"),0.)>=0. &bCleanup=STRing.SCAN("task.res,ext.res,ext.delete",STRing.LoWeR("&sCmd"),0.)>=0. &sPpf=OS.PresentPracticeFile() IF (&bTaskConfig||&bExtLoad) ( IF ("&nVariant"!="32.")&&("&nVariant"!="64.") ( IF CPUIS64BIT() &nVariant="64." ELSE &nVariant="32." ) IF STRing.ComPare("&sArguments","*32BIT*") &nVariant="32." ELSE IF STRing.ComPare("&sArguments","*64BIT*") &nVariant="64." ) IF (&bTaskConfig) ( PRIVATE &sMachineName &sMachineName="AtomThreads" TASK.RESet IF (&nVariant==32.) ( GOSUB extension_32bit "&sParameters" "&sOptionAccess" IF !STRing.Compare("&sArguments","*MENU=NONE*") GOSUB menu_32bit "&sMachineName" "" GOSUB autoload_32bit "" ) ELSE IF (&nVariant==64.) ( PRINTF %ERROR "%s: No support for %ubit, please contact support@lauterbach.com." "AtomThreads" &nVariant ) ) ELSE IF (&bExtLoad) ( PRIVATE &sMachineName &sInfix &sOptionName &sOptionMachine &sInfix="" &sMachineName="AtomThreads" IF ("&sName"!="") ( &sInfix=STRing.UPpeR("&(sName).") &sMachineName="&(sName)" &sOptionName="/NAME &sMachineName" ) ELSE IF PRACTICE.FUNCtion.AVAILable(SYStem.Option.MACHINESPACES) ( IF SYStem.Option.MACHINESPACES() &sInfix=TASK.TRANSPOSE.INFIX(OS.FILE.BASENAME("&sPpf",".**"))+"." ) IF ("&sMachine"!="") ( &sOptionMachine="/MACHINE &sMachine" ) IF (&nVariant==32.) ( GOSUB extension_32bit "&sParameters" "&sOptionAccess &sOptionAccessMisc &sOptionName &sOptionMachine" IF !STRing.Compare("&sArguments","*MENU=NONE*") GOSUB menu_32bit "&sMachineName" "&sInfix" GOSUB autoload_32bit "&sOptionMachine" ) ELSE IF (&nVariant==64.) ( PRINTF %ERROR "%s: No support for %ubit, please contact support@lauterbach.com." "AtomThreads" &nVariant ) ) ELSE IF (&bCleanup) ( PRIVATE &sMachineName &sOptionMachine &sMachineName="AtomThreads" IF ("&sName"!="") ( &sMachineName="&(sName)" ) IF ("&sMachine"!="") ( &sOptionMachine="/MACHINE &sMachine" ) IF STRing.SCAN(HELP.FILTER(),"rtosatomthreads",0.)>=0. HELP.FILTER.Delete rtosatomthreads GOSUB menu_delete "&sMachineName" GOSUB autoload_delete "&sOptionMachine" ) ENDDO extension_32bit: ; (options) ( PARAMETERS &sParameters &sOptions EXTension.LOAD &sParameters &sOptions ( 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 YnJhbmNoZXMvbmlnaHRseQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABodHRwczovL3N2bi5pbnRlcm4ubGF1dGVyYmFjaC5jb20v c3ZuL2tlcm5lbHNyYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJhdW1laXN0ZXIAAAAAAABlZGst bGludXg2NGJpdC03AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAR0NDIDkuNS4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAfoAAAABgAAAA0AAABOAAAn0gAAB+gAAAAGAAAAAAAAAAAAAAAA AAAAAAAAAAAAATeRQXRvbVRocmVhZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHRjYlJlYWR5UQAAAGN1cnJfdGNiAAAAAG1h Z2ljAAAALS0tIFRBU0sgPSAlOHggPSAAAAAlMTZzIAAAAFRBU0suU1RBQ0suUEFUVEVSTiAweDVB AFRBU0suQ09ORklHAEF0b21UaHJlYWRzAEFSTQA8dGltZXI+AHRpbWVyX3F1ZXVlAFRBU0suVElN ZXIgJXgAAABBVC5USU1MACU4eCAgAAAAICAgICAgJThkLgAAJXMgACAgICAgICAgICAgIE5PTkUg AAAAICAgICAgICAlOHggAAAAAAoAAABWYXIuVmlldyAlJU9wZW4gKEFUT01fVElNRVIgKikleAAA AABtYWdpYyAgICAAAABSZW1haW5pbmcgdGlja3MAQ2FsbGJhY2sgZnVuY3Rpb24gICAgIAAAQ2Fs bGJhY2sgRGF0YSBQdHIAAABTb3JyeTogTm8gVGltZXJzIGRlZmluZWQAAAAAU29ycnk6IFRpbWVy IG5vdCBmb3VuZC4AVElNRVIAAABUSU0AVElNZXIAAABAKD0pX19SVE9TX0FUT01USFJFQURTX19U QVNLX1RJTQAAAAA8c2VtYXBob3JlPgBUQVNLLlNFTWFwaG9yZSAleAAAAEFULlNFTUwAJTE2cwAA AAAgICU0ZCAgACAgICAgICAgICAgICAgICAgMC4AICAgICAgICAgICAgICAlNGQuAABWYXIuVmll dyAlJU9wZW4gKEFUT01fU0VNICopJXgAACU0ZCAgAAAAQmxvY2tlZCB0aHJlYWRzOgAAAAAgICAl OHggICAgJTE2cwoAQ291bnQgAABOYW1lICAgICAgICAgICAgIAAAAENvdW50ICAATm8uIGJsb2Nr ZWQgdGhyZWFkcwBTb3JyeTogQ291bGRuJ3QgZmluZCBhbnkgc2VtYXBob3JlcwBTb3JyeTogU2Vt YXBob3JlIG5vdCBmb3VuZC4AU0VNQVBIT1JFAAAAU0VNAFNFTWFwaG9yZQAAAEAoPSlfX1JUT1Nf QVRPTVRIUkVBRFNfX1RBU0tfU0VNAAAAACVAY01URCBWZXJzaW9uICAlcyAgJXMgICUwMmQuJTAy ZC4lMDRkIChCdWlsZCAlcykKCgBTeXN0ZW0gRGV0YWlsczoKAAAAACAgICBTdGFjayBQb2ludGVy IG9mZnNldCAgICAgPSAlZAoAACAgICBQcmlvcml0eSBvZmZzZXQgICAgICAgICAgPSAlZAoAACAg ICBOZXh0IHBvaW50ZXIgb2Zmc2V0ICAgICAgPSAlZAoAACAgICBTdGFjayBiYXNlIG9mZnNldCAg ICAgICAgPSAlZAoAACAgICBTdGFjayBTaXplIG9mZnNldCAgICAgICAgPSAlZAoAACAgICBFbnRy eSBwb2ludCBvZmZzZXQgICAgICAgPSAlZAoAACAgICBTdXNwZW5kZWQgb2Zmc2V0ICAgICAgICAg PSAlZAoAACAgICBUZXJtaW5hdGVkIG9mZnNldCAgICAgICAgPSAlZAoAAE11dGV4IERldGFpbHM6 CgAgICAgU3VzcGVuZGVkIFEgb2Zmc2V0ICAgICAgID0gJWQKAAAgICAgT3duZXIgVENCIG9mZnNl dCAgICAgICAgID0gJWQKAAAgICAgT3duZXIgQ291bnQgb2Zmc2V0ICAgICAgID0gJWQKAABNZXNz YWdlIFF1ZXVlIERldGFpbHM6CgAgICAgUSB3YWl0aW5nIHRvIHNlbmQgb2Zmc2V0ID0gJWQKAAAg ICAgUSB3YWl0aW5nIHRvIHJjdiBvZmZzZXQgID0gJWQKAAAgICAgUSBNYXguIG1zZ3Mgb2Zmc2V0 ICAgICAgID0gJWQKAAAgICAgUSBOby4gbXNncyBpbiBRIG9mZnNldCAgID0gJWQKAAAgICAgUSBN YXguIG1zZyBzaXplIG9mZnNldCAgID0gJWQKAABTZW1hcGhvcmUgRGV0YWlsczoKACAgICBDb3Vu dCBvZmZzZXQgICAgICAgICAgICAgPSAlZAoAAFRpbWVyIERldGFpbHM6CgAgICAgQ2FsbGJhY2sg ZnVuYyBvZmZzZXQgICAgID0gJWQKAAAgICAgQ2FsbGJhY2sgZGF0YSBvZmZzZXQgICAgID0gJWQK AAAgICAgVGlja3MgdG8gQ0Igb2Zmc2V0ICAgICAgID0gJWQKAAAgICAgUHRyIHRvIG5leHQgdGlt ZXIgb2Zmc2V0ID0gJWQKAABUZXN0IERhdGEgICAgAAAAVEVTVAAAAAA8cXVldWU+AFRBU0suUXVl dWUgJXgAAABBVC5RTAAAACU4ZC4gIAAAICAgICU4ZC4gAAAAICAgICAgMC4AAAAAICAgJTRkLgBW YXIuVmlldyAlJU9wZW4gKEFUT01fUVVFVUUgKikleAAAAAAlOGQgIAAAACAgICAlOGQgAAAAAEJs b2NrZWQgU2VuZGluZyB0aHJlYWRzOgAAAABCbG9ja2VkIFJlY2VpdmluZyB0aHJlYWRzOgAATWF4 IE1zZ3MuAAAATXNnIFNpemUgIAAAQ3VyciBOby4gTXNncyAgAE5hbWUgICAgICAgICAgICAgIAAA TWF4IE1zZ3MuICAgAAAAAE5vLiBSQ1YgAAAAAE5vLiBTTkQgAAAAAFNvcnJ5OiBDb3VsZG4ndCBm aW5kIGFueSBNZXNzYWdlIFF1ZXVlcwBTb3JyeTogUXVldWUgbm90IGZvdW5kLgBRVUVVRQAAAFF1 ZXVlAAAAQCg9KV9fUlRPU19BVE9NVEhSRUFEU19fVEFTS19RAAA8bXV0ZXg+AFRBU0suTXVUZVgg JXgAAABBVC5NTAAAACV4ICglMTZzKQAAAFZhci5WaWV3ICUlT3BlbiAoQVRPTV9NVVRFWCAqKSV4 AAAAACAgJTh4IAAAJTVkICAAAABvd25lciAgICAgIABjb3VudCAAAE93bmVyICAgICAgICAgICAg ICAgICAgICAgIABOby4gQmxvY2tlZCBUaHJlYWRzAFNvcnJ5OiBDb3VsZG4ndCBnZXQgc3ltYm9s IGFkZHJlc3NlcwAAAABTb3JyeTogbXV0ZXggbm90IGZvdW5kLgBNVVRFWAAAAE1UWABNdVRlWAAA AEAoPSlfX1JUT1NfQVRPTVRIUkVBRFNfX1RBU0tfTVRYAAAAADx0YXNrPgAAVmFyLlZpZXcgJSVP cGVuIChBVE9NX1RDQiAqKSV4AABBVC5UTAAAAHF1ZXVlIFNORCAgICAAAAAgJTNkLiAAAHF1ZXVl IFJDViAgICAAAAAgICogRGVjb2RlZCAlZCBNZXNzYWdlIFF1ZXVlcwAAACAgICBtdXRleCAgICAA AAAgICogRGVjb2RlZCAlZCBNdXRleGVzAABzZW1hcGhvcmUgICAgAAAAICAqIERlY29kZWQgJWQg U2VtYXBob3JlcwAAACAgKiBjdXJyX3Rhc2sgPSAleAAAICBydW5uaW5nICAgIAAAAHN1c3BlbmRl ZCAgICAAAAB0ZXJtaW5hdGVkIAAgICAgcmVhZHkgIAAgICogV2Fsa2luZyB0Y2JSZWFkeVE6IAAg ICAqIEZvdW5kIHRjYiBhdCAleAAAAAAgICAgcmVhZHkgICAgAAAAbWFnaWMgICAgIG5hbWUgICAg ICAgICAgICAgICAgIHN0YXRlICAgIHByaW8AAAAAVEFTS0xJU1QAAAAAVEwAAFRhc2tMaXN0AAAA AEAoPSlfX1JUT1NfQVRPTVRIUkVBRFNfX1RBU0tfVEwAQ29ydGV4LU07ICAgICBtYWdpYyA9ICV4 AAAAACVzICAgPSAleAAAACEhQVJNIENvbnRleHQ6IFVwZGF0ZSBuZWVkZWQhAAAAQ09SVEVYTQBy NAAAcjUAAHI2AAByNwAAcjgAAHI5AAByMTAAcjExAHIxNAByMAAAcjEAAHIyAAByMwAAcjEyAHBj AAB4cHNyAAAAAHBzcABjcHNyAAAAAHI4X3VzcgAAcjlfdXNyAAByMTBfdXNyAHIxMV91c3IAcjEy X3VzcgByMTNfdXNyAHIxNF91c3IAaGFyZHdhcmV0aHJlYWQAACAgICAgICAgRm91bmQgTXV0ZXgg YXQgOiAleAAgICAgICAgIEZvdW5kIFNlbWFwaG9yZSBhdCA6ICV4ACAgICAgICAgRm91bmQgTXNn IFEgYXQgOiAleABBVE9NX1RDQi5zcF9zYXZlX3B0cgAAAABBVE9NX1RDQi5wcmlvcml0eQAAAEFU T01fVENCLm5leHRfdGNiAAAAQVRPTV9UQ0IuZW50cnlfcG9pbnQAAAAAQVRPTV9UQ0Iuc3VzcGVu ZGVkAABBVE9NX1RDQi50ZXJtaW5hdGVkAEFUT01fVENCLnN0YWNrX2JvdHRvbQAAAEFUT01fVENC LnN0YWNrX3NpemUAQVRPTV9NVVRFWC5zdXNwUQAAAABBVE9NX01VVEVYLm93bmVyAAAAAEFUT01f TVVURVguY291bnQAAAAAQVRPTV9RVUVVRS5wdXRTdXNwUQBBVE9NX1FVRVVFLmdldFN1c3BRAEFU T01fUVVFVUUubWF4X251bV9tc2dzAEFUT01fUVVFVUUubnVtX21zZ3Nfc3RvcmVkAABBVE9NX1FV RVVFLnVuaXRfc2l6ZQAAAABBVE9NX1NFTS5zdXNwUQAAQVRPTV9TRU0uY291bnQAAEFUT01fVElN RVIuY2JfZnVuYwAAQVRPTV9USU1FUi5jYl9kYXRhAABBVE9NX1RJTUVSLmNiX3RpY2tzAEFUT01f VElNRVIubmV4dF90aW1lcgAAAEFUT01fTVVURVgAACoAAABBVE9NX1NFTQAAAABBVE9NX1FVRVVF AERBVEEAAAbAAAAHHAAAM+gAAAADAAAAFwAAAAAAADbwAAAGWAAANvAAAAQsAAA28AAABIAAADbw AAAFLAAANvAAADP0AAA0AAAAAAAAAAACAAAAAAAANNwAAAAAAAAAAwBGAAAABACcAAAMRAAAAAIA AAAAAAA0+AAAAAAAAAADAEYAAAAEAJwAAAp8AAA1EAAANRgAADUcAAA1JAAACbwAADSUAAA0oAAA NLAAADTIAAAAAAAAAAIAAAAAAAA2LAAAAAAAAAADAEYAAAAEAQQAAA+0AAAAAgAAAAAAADZQAAAA AAAAAAMARgAAAAQBEAAADhAAADZsAAA2eAAANnwAADaIAAAN2AAANJQAADX0AAAAAAAANJQAADX8 AAA2EAAANhgAAAAAAAAAAQBGAAAABAFIAAARMAAAOkQAADpEAAA6RAAANvAAABEYAAA6NAAAAAAA AAACAAAAAAAAO2gAAAAAAAAAAwBGAAAABAGkAAAXlAAAAAIAAAAAAAA7kAAAAAAAAAADAFoAAAAE AbgAABVEAAA7qAAAM5wAADuwAAA7uAAAFQwAADSUAAA7BAAAOxAAADscAAAAAAAANJQAADssAAA7 QAAAOxAAADscAAA7UAAAO1wAAAAAAAAAAgAAAAAAADx8AAAAAAAAAAMARgAAAAQCLAAAHFQAAAAC AAAAAAAAPKQAAAAAAAAAAwBGAAAABAI8AAAagAAAPLwAADzEAAA8yAAAPNAAABpIAAA0lAAAPDgA ADxEAAAAAAAANJQAADxMAAA19AAAPGgAAAAAAAAAAgAAAAAAADx8AAAAAAAAAAEAUAAAAAA+TAAA JmQAAD58AAA+iAAAPowAAD6YAAAe/AAAP1AAAAAAAAAABAAAPywAAAAAAAAABAAAPzAAAAAAAAAA BAAAPzQAAAAAAAAABAAAPzgAAAAAAAAABAAAPwgAAAAAAAAABAAAPwwAAAAAAAAABAAAPxAAAAAA AAAABAAAPxQAAAAAAAAABAAAP1gAAAAAAAAABAAAP2AAAAAAAAAABAAAP2gAAAAAAAAABAAAP3AA AAAAAAAABAAAP3gAAAAAAAAABAAAP4AAAAAAAAAABAAAP4gAAAAAAAAABAAAP0AAAAAAAAAABAAA AAAAAAAAAAAAAAAAPwgAAAAAAAAABAAAPwwAAAAAAAAABAAAPxAAAAAAAAAABAAAPxQAAAAAAAAA BAAAPxgAAAAAAAAABAAAPxwAAAAAAAAABAAAPyAAAAAAAAAABAAAPyQAAAAAAAAABAAAPygAAAAA AAAABAAAPywAAAAAAAAABAAAPzAAAAAAAAAABAAAPzQAAAAAAAAABAAAPzgAAAAAAAAABAAAPzwA AAAAAAAABAAAP0AAAAAAAAAABAAAP0QAAAAAAAAABAAAP0wAAAAAAAAABAAAAAAAAAAAAAAAAAAA P5AAAAAAAAAAAAAAAAAAAAAAAAAAAFQzMkU= ) HELP.FILTER.Add rtosatomthreads RETURN ) menu_32bit: ;(header, infix) ( PMACRO.LOCK ( PRIVATE &sHeader &sInfix &sMenuName PARAMETERS &sHeader &sInfix &sMenuName=TASK.TRANSPOSE.INFIX("&sHeader") IF MENU.EXIST("TASK.&(sMenuName)") MENU.Delete.NAME TASK.&(sMenuName) IF MENU.EXIST("EXT.&(sMenuName)") MENU.Delete.NAME EXT.&(sMenuName) MENU.ReProgram (&+ ; -------------------------------------------------------------------------------- ; @Title: Atomthreads specific menu ; @Description: - ; @Keywords: atomthreads menu awareness ; @Author: RIC ; @Copyright: (c) 1989-2021 Lauterbach GmbH, licensed for use with TRACE32(R) only ; -------------------------------------------------------------------------------- ; $Id: atomthreads.m 8136 2022-11-08 09:54:32Z amerkle $ NAME "TASK.&(sMenuName)" IF !MENU.EXIST("TASK.&(sMenuName)") ( add menu ( POPUP "&(sHeader)" ( default MENUITEM "Display &Tasks" "TASK.&(sInfix)TaskList" MENUITEM "Display &Mutexes" ( TASK.&(sInfix)MuTeX ) menuitem "Display &Queues" ( TASK.&(sInfix)Queue ) MENUITEM "Display &Semaphores" ( TASK.&(sInfix)SEMaphore ) MENUITEM "Display &Timers" ( TASK.&(sInfix)TIMer ) separator popup "&Stack Coverage" ( menuitem "&List Stacks" ( TASK.&(sInfix)STacK.PATtern 0x5A TASK.&(sInfix)STacK.view ) menuitem "Add Task" "TASK.&(sInfix)STacK.ADD" menuitem "Remove Task" "TASK.&(sInfix)STacK.RM" menuitem "Reset Coverage" ( PRIVATE &yes DIALOG.YESNO "Overwrite unused stack space" "with stack fill pattern?" ENTRY &yes IF !&yes ENDDO TASK.&(sInfix)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 ) if a.mode.flow() ( Break.Delete /TraceEnable Break.Set C:0x1F:::task.&(sInfix)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 a.mode.flow() ( Break.Delete /TraceData Break.Set C:0x1F:::task.&(sInfix)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 "&Help" ( MENUITEM "[:manual]OS Awareness Manual Atomthreads" "HELP __RTOS_ATOMTHREADS_" ) ) MENU "AT.TIML" ( default MENUITEM "Display detailed Information" ( PRIVATE &address &address=track.address() TASK.&(sInfix)TIMer &address ) SEPARATOR MENUITEM "Display Timer Structure" ( PRIVATE &address &struct &address=track.address() &struct="ATOM_TIMER" Var.View %Open %String (&struct *)(&address) ) SEPARATOR MENUITEM "Dump Memory" ( PRIVATE &address &address=address.offset(track.address()) Data.dump &address /l /dialog ) SEPARATOR MENUITEM "Show Callback Function" ( PRIVATE &magic &address &magic=address.offset(track.address()) &address=Var.Value(((ATOM_TIMER*)&magic)->cb_func) List &address ) ) MENU "AT.QL" ( default MENUITEM "Display Detailed Information" ( PRIVATE &address &address=track.offset() TASK.&(sInfix)Queue &address ) SEPARATOR MENUITEM "Display Queue Structure" ( PRIVATE &address &struct &address=track.address() &struct="ATOM_QUEUE" Var.View %Open %String (&struct *)(&address) ) SEPARATOR MENUITEM "Dump Memory" ( PRIVATE &address &address=address.offset(track.address()) Data.dump &address /l /dialog ) ) MENU "AT.SEML" ( default MENUITEM "Display Detailed Information" ( PRIVATE &address &address=track.address() TASK.&(sInfix)SEMaphore &address ) SEPARATOR MENUITEM "Display Semaphore Structure" ( PRIVATE &address &struct &address=track.address() &struct="ATOM_SEM" Var.View %Open %String (&struct *)(&address) ) SEPARATOR MENUITEM "Dump Memory" ( PRIVATE &address &address=address.offset(track.address()) Data.dump &address /l /dialog ) ) MENU "AT.ML" ( default MENUITEM "Display Detailed Information" ( PRIVATE &address &address=track.address() TASK.&(sInfix)MuTeX &address ) SEPARATOR MENUITEM "Display Mutex Structure" ( PRIVATE &address &struct &address=track.address() &struct="ATOM_MUTEX" Var.View %Open %String (&struct *)(&address) ) SEPARATOR MENUITEM "Dump Memory" ( PRIVATE &address &address=address.offset(track.address()) Data.dump &address /l /dialog ) ) menu "AT.TL" ( default ;menuitem "Display detailed" ;( ; &address=address.offset(track.address()) ; TASK.&(sInfix)TaskList &address ;) menuitem "Display task struct" ( PRIVATE &address &struct &address=track.address() ;&struct=task.&(sInfix)struct(tcb) &struct="ATOM_TCB" Var.View %Open %String (&struct*)(&address) ) separator menuitem "Display Stack Frame" ( PRIVATE &address &address=address.offset(track.address()) Var.Frame /Locals /Caller /Task &address ) menuitem "Display Registers" ( PRIVATE &address &address=address.offset(track.address()) Register /Task &address ) menuitem "Switch Context" "Register.TASK address.offset(track.address())" separator menuitem "Add to Stack Cov" "TASK.&(sInfix)STK.ADD address.offset(track.address())" menuitem "Rm from Stack Cov" "TASK.&(sInfix)STK.RM address.offset(track.address())" separator menuitem "Dump task entry" ( PRIVATE &address &address=address.offset(track.address()) Data.dump &address /l /dialog ) ) ) ) ) PMACRO.UNLOCK RETURN ) autoload_32bit: ;(options) ( PARAMETERS &sOptions RETURN ) menu_delete: ;(header) ( PRIVATE &sHeader &sMenuName PARAMETERS &sHeader &sMenuName=TASK.TRANSPOSE.INFIX("&sHeader") IF MENU.EXIST("TASK.&(sMenuName)") MENU.Delete.NAME TASK.&(sMenuName) IF MENU.EXIST("EXT.&(sMenuName)") MENU.Delete.NAME EXT.&(sMenuName) RETURN ) autoload_delete: ;(options) ( PARAMETERS &sOptionMachine RETURN )