00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef TOOLCTLMESSAGES_H
00026 #define TOOLCTLMESSAGES_H
00027
00028
00029
00030 #include <inttypes.h>
00031 #include <sys/types.h>
00032 #include <sys/stat.h>
00033 #include <signal.h>
00034
00035 namespace bgcios
00036 {
00037 namespace toolctl
00038 {
00039
00040
00041 typedef uint32_t BG_ThreadID_t;
00042
00043
00044 typedef uint64_t BG_Addr_t;
00045
00046
00047 typedef uint64_t BG_Reg_t;
00048
00049
00050 typedef uint64_t BG_Sigset_t;
00051
00052
00053
00054
00055
00056
00057
00058 const uint16_t BaseRdmaPort = 7614;
00059
00060
00061 const uint8_t ProtocolVersion = 4;
00062
00063
00064 const uint16_t MaxQueryCommands = 16;
00065
00066
00067 const uint16_t MaxUpdateCommands = 16;
00068
00069
00070 const uint32_t MaxMemorySize = 65024;
00071
00072
00073 const uint32_t MaxThreadIds = 1024;
00074
00075
00076 const uint32_t MaxAuxVecDWords = 32;
00077
00078
00079 const uint32_t MaxStackFrames = 400;
00080
00081
00082 const uint32_t NumGPRegs = 32;
00083
00084
00085 const uint32_t NumFPRegs = 32;
00086
00087
00088 const uint8_t QueryPriorityLevel = 0;
00089
00090
00091 const uint8_t MinUpdatePriorityLevel = 1;
00092
00093
00094 const uint8_t MaxUpdatePriorityLevel = 99;
00095
00096
00097 const size_t MaxActiveTools = 4;
00098
00099
00100 const uint16_t MaxRanksPerNode = 64;
00101
00102
00103 const uint16_t MaxPersistPathnameSize = 128;
00104
00105
00106 const uint16_t MaxPersistPathnames = 256;
00107
00108
00109 const uint16_t ToolTagSize = 8;
00110
00111
00112
00113 const uint16_t ErrorAck = 5000;
00114 const uint16_t Attach = 5001;
00115 const uint16_t AttachAck = 5002;
00116 const uint16_t Detach = 5003;
00117 const uint16_t DetachAck = 5004;
00118 const uint16_t Query = 5005;
00119 const uint16_t QueryAck = 5006;
00120 const uint16_t Update = 5007;
00121 const uint16_t UpdateAck = 5008;
00122 const uint16_t SetupJob = 5009;
00123 const uint16_t SetupJobAck = 5010;
00124 const uint16_t Notify = 5011;
00125 const uint16_t NotifyAck = 5012;
00126 const uint16_t Control = 5013;
00127 const uint16_t ControlAck = 5014;
00128
00129
00130
00131 const uint16_t GetSpecialRegs = 101;
00132 const uint16_t GetSpecialRegsAck = 102;
00133 const uint16_t GetGeneralRegs = 103;
00134 const uint16_t GetGeneralRegsAck = 104;
00135 const uint16_t GetFloatRegs = 105;
00136 const uint16_t GetFloatRegsAck = 106;
00137 const uint16_t GetDebugRegs = 107;
00138 const uint16_t GetDebugRegsAck = 108;
00139 const uint16_t GetMemory = 109;
00140 const uint16_t GetMemoryAck = 110;
00141 const uint16_t GetThreadList = 111;
00142 const uint16_t GetThreadListAck = 112;
00143 const uint16_t GetAuxVectors = 113;
00144 const uint16_t GetAuxVectorsAck = 114;
00145 const uint16_t GetProcessData = 115;
00146 const uint16_t GetProcessDataAck = 116;
00147 const uint16_t GetThreadData = 117;
00148 const uint16_t GetThreadDataAck = 118;
00149 const uint16_t GetPreferences = 119;
00150 const uint16_t GetPreferencesAck = 120;
00151 const uint16_t GetFilenames = 121;
00152 const uint16_t GetFilenamesAck = 122;
00153 const uint16_t GetFileStatData = 123;
00154 const uint16_t GetFileStatDataAck = 124;
00155 const uint16_t GetFileContents = 125;
00156 const uint16_t GetFileContentsAck = 126;
00157
00158
00159
00160 const uint16_t SetGeneralReg = 201;
00161 const uint16_t SetGeneralRegAck = 202;
00162 const uint16_t SetFloatReg = 203;
00163 const uint16_t SetFloatRegAck = 204;
00164 const uint16_t SetDebugReg = 205;
00165 const uint16_t SetDebugRegAck = 206;
00166 const uint16_t SetMemory = 207;
00167 const uint16_t SetMemoryAck = 208;
00168 const uint16_t HoldThread = 209;
00169 const uint16_t HoldThreadAck = 210;
00170 const uint16_t ReleaseThread = 211;
00171 const uint16_t ReleaseThreadAck = 212;
00172 const uint16_t InstallTrapHandler = 213;
00173 const uint16_t InstallTrapHandlerAck = 214;
00174 const uint16_t AllocateMemory = 215;
00175 const uint16_t AllocateMemoryAck = 216;
00176 const uint16_t SendSignal = 217;
00177 const uint16_t SendSignalAck = 218;
00178 const uint16_t ContinueProcess = 219;
00179 const uint16_t ContinueProcessAck = 220;
00180 const uint16_t StepThread = 221;
00181 const uint16_t StepThreadAck = 222;
00182 const uint16_t SetBreakpoint = 223;
00183 const uint16_t SetBreakpointAck = 224;
00184 const uint16_t ResetBreakpoint = 225;
00185 const uint16_t ResetBreakpointAck = 226;
00186 const uint16_t SetWatchpoint = 227;
00187 const uint16_t SetWatchpointAck = 228;
00188 const uint16_t ResetWatchpoint = 229;
00189 const uint16_t ResetWatchpointAck = 230;
00190 const uint16_t RemoveTrapHandler = 233;
00191 const uint16_t RemoveTrapHandlerAck = 234;
00192 const uint16_t SetPreferences = 235;
00193 const uint16_t SetPreferencesAck = 236;
00194 const uint16_t FreeMemory = 237;
00195 const uint16_t FreeMemoryAck = 238;
00196 const uint16_t SetSpecialReg = 239;
00197 const uint16_t SetSpecialRegAck = 240;
00198 const uint16_t SetGeneralRegs = 241;
00199 const uint16_t SetGeneralRegsAck = 242;
00200 const uint16_t SetFloatRegs = 243;
00201 const uint16_t SetFloatRegsAck = 244;
00202 const uint16_t SetDebugRegs = 245;
00203 const uint16_t SetDebugRegsAck = 246;
00204 const uint16_t SetSpecialRegs = 247;
00205 const uint16_t SetSpecialRegsAck = 248;
00206 const uint16_t ReleaseControl = 249;
00207 const uint16_t ReleaseControlAck = 250;
00208 const uint16_t SetContinuationSignal = 251;
00209 const uint16_t SetContinuationSignalAck = 252;
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219 enum ProcessSelect
00220 {
00221 RankInHeader = 0,
00222 RanksInNode
00223 };
00224
00225
00226
00227 enum DynamicNotifyMode
00228 {
00229 DynamicNotifyDLoader = 0,
00230 DynamicNotifyStart
00231 };
00232
00233
00234
00235 enum DACTrapMode
00236 {
00237 DACTrap_NoChange = 0,
00238 TrapOnDAC,
00239 TrapAfterDAC
00240 };
00241
00242
00243
00244 enum NotifyMessageType
00245 {
00246 NotifyMessageType_Signal,
00247 NotifyMessageType_Termination,
00248 NotifyMessageType_Control
00249 };
00250
00251
00252
00253 enum NotifySignalReason
00254 {
00255 NotifySignal_Generic,
00256 NotifySignal_Breakpoint,
00257 NotifySignal_WatchpointRead,
00258 NotifySignal_WatchpointWrite,
00259 NotifySignal_StepComplete,
00260 };
00261
00262
00263
00264 enum NotifyControlReason
00265 {
00266 NotifyControl_Conflict,
00267 NotifyControl_Available
00268 };
00269
00270
00271
00272 enum ReleaseControlNotify
00273 {
00274 ReleaseControlNotify_Inactive,
00275 ReleaseControlNotify_Active
00276 };
00277
00278
00279
00280 enum SpecAccess
00281 {
00282 SpecAccess_UseThreadState = 0,
00283 SpecAccess_ForceNonSpeculative
00284 };
00285
00286
00287
00288 enum SharedMemoryAccess
00289 {
00290 SharedMemoryAccess_NotAllow = 0,
00291 SharedMemoryAccess_Allow
00292 };
00293
00294
00295
00296 enum FastBreakMode
00297 {
00298 FastBreak_NoChange = 0,
00299 FastBreak_Disable,
00300 FastBreak_Enable
00301 };
00302
00303
00304
00305 enum FastWatchMode
00306 {
00307 FastWatch_NoChange = 0,
00308 FastWatch_Disable,
00309 FastWatch_Enable
00310 };
00311
00312
00313
00314 enum CmdReturnCode
00315 {
00316 CmdSuccess = 0,
00317 CmdTIDinval = 1,
00318 CmdInval = 2,
00319 CmdTimeout = 3,
00320 CmdAllocErr = 4,
00321 CmdParmErr = 5,
00322 CmdBrkptFail = 6,
00323 CmdAddrErr = 7,
00324 CmdLngthErr = 8,
00325 CmdHwdUnavail = 9,
00326 CmdMemUnavail = 10,
00327 CmdFileNotFound= 11,
00328 CmdConflict = 12,
00329 CmdPendingNotify = 13
00330 };
00331
00332
00333
00334 enum BG_Thread_State
00335 {
00336 Run = 1,
00337 Sleep,
00338 FutexWait,
00339 Idle
00340 };
00341
00342
00343
00344 enum BG_Thread_ToolState
00345 {
00346 Active = 1,
00347 Hold,
00348 Suspend,
00349 HoldSuspend
00350 };
00351
00352
00353
00354 enum BG_Thread_SpecState
00355 {
00356 NonSpeculative,
00357 TransactionalMemory,
00358 TransactionalMemory_Invalid,
00359
00360 SpeculativeExecution,
00361 SpeculativeExecution_Invalid
00362
00363 };
00364
00365
00366
00367 enum WatchType
00368 {
00369 WatchRead = 1,
00370 WatchWrite,
00371 WatchReadWrite
00372 };
00373
00374
00375
00376 enum SpecialRegSelect
00377 {
00378 iar = 1,
00379 lr,
00380 msr,
00381 cr,
00382 ctr,
00383 xer,
00384 fpscr,
00385 dear,
00386 esr
00387 };
00388
00389
00390
00391 enum GeneralRegSelect
00392 {
00393 gpr0=0,gpr1,gpr2,gpr3,gpr4,gpr5,gpr6,gpr7,
00394 gpr8,gpr9,gpr10,gpr11,gpr12,gpr13,gpr14,gpr15,
00395 gpr16,gpr17,gpr18,gpr19,gpr20,gpr21,gpr22,gpr23,
00396 gpr24,gpr25,gpr26,gpr27,gpr28,gpr29,gpr30,gpr31
00397 };
00398
00399
00400
00401 enum FloatRegSelect
00402 {
00403 fpr0=0,fpr1,fpr2,fpr3,fpr4,fpr5,fpr6,fpr7,
00404 fpr8,fpr9,fpr10,fpr11,fpr12,fpr13,fpr14,fpr15,
00405 fpr16,fpr17,fpr18,fpr19,fpr20,fpr21,fpr22,fpr23,
00406 fpr24,fpr25,fpr26,fpr27,fpr28,fpr29,fpr30,fpr31
00407 };
00408
00409
00410
00411 enum DebugRegSelect
00412 {
00413 dbcr0 = 1,
00414 dbcr1,
00415 dbcr2,
00416 dbcr3,
00417 dac1,
00418 dac2,
00419 dac3,
00420 dac4,
00421 iac1,
00422 iac2,
00423 iac3,
00424 iac4,
00425 dbsr
00426 };
00427
00428
00429
00430
00431
00432
00433
00434
00435 union BG_Float
00436 {
00437 double d[ 4];
00438 float f[ 8];
00439 uint64_t ll[ 4];
00440 uint32_t l[ 8];
00441 uint8_t b[32];
00442 };
00443
00444
00445
00446 struct CommandDescriptor
00447 {
00448 uint16_t type;
00449 uint16_t reserved;
00450 uint32_t offset;
00451 uint32_t length;
00452 uint32_t returnCode;
00453 };
00454
00455
00456
00457 class ToolMessage
00458 {
00459 public:
00460 struct MessageHeader header;
00461 uint32_t toolId;
00462 };
00463
00464
00465
00466 struct ErrorAckMessage : public ToolMessage
00467 {
00468 };
00469
00470
00471
00472 struct AttachMessage : public ToolMessage
00473 {
00474 public:
00475 char toolTag[ToolTagSize];
00476 uint8_t priority;
00477 ProcessSelect procSelect;
00478 };
00479
00480
00481
00482 struct AttachAckMessage : public ToolMessage
00483 {
00484 uint16_t numProcess;
00485 uint32_t rank[MaxRanksPerNode];
00486 };
00487
00488
00489
00490 class ControlMessage : public ToolMessage
00491 {
00492 public:
00493 BG_Sigset_t notifySet;
00494 uint32_t sndSignal;
00495 DynamicNotifyMode dynamicNotifyMode;
00496 DACTrapMode dacTrapMode;
00497
00498
00499 inline void notifySignalSet(sigset_t *sigset)
00500 {
00501
00502 notifySet = *((uint64_t*)sigset);
00503 }
00504 };
00505
00506
00507
00508 struct ControlAckMessage : public ToolMessage
00509 {
00510 uint16_t controllingToolId;
00511 char toolTag[ToolTagSize];
00512 uint8_t priority;
00513 };
00514
00515
00516
00517 struct DetachMessage : public ToolMessage
00518 {
00519 ProcessSelect procSelect;
00520 };
00521
00522
00523
00524 struct DetachAckMessage : public ToolMessage
00525 {
00526 uint16_t numProcess;
00527 uint32_t rank[MaxRanksPerNode];
00528 };
00529
00530
00531
00532 struct QueryMessage : public ToolMessage
00533 {
00534 uint16_t numCommands;
00535 struct CommandDescriptor cmdList[MaxQueryCommands];
00536 };
00537
00538
00539
00540 struct QueryAckMessage : public ToolMessage
00541 {
00542 uint16_t numCommands;
00543 struct CommandDescriptor cmdList[MaxQueryCommands];
00544 };
00545
00546
00547
00548 struct UpdateMessage : public ToolMessage
00549 {
00550 uint16_t numCommands;
00551 struct CommandDescriptor cmdList[MaxUpdateCommands];
00552 };
00553
00554
00555
00556 struct UpdateAckMessage : public ToolMessage
00557 {
00558 uint16_t numCommands;
00559 struct CommandDescriptor cmdList[MaxUpdateCommands];
00560 };
00561
00562
00563
00564 struct SetupJobMessage : public ToolMessage
00565 {
00566 uint16_t numRanks;
00567 uint32_t ranks[MaxRanksPerNode];
00568 uid_t userId;
00569 gid_t groupId;
00570 uint32_t nodeId;
00571
00572 };
00573
00574
00575
00576 struct SetupJobAckMessage : public ToolMessage
00577 {
00578 };
00579
00580
00581
00582 struct NotifyMessage : public ToolMessage
00583 {
00584 NotifyMessageType notifyMessageType;
00585 union
00586 {
00587 struct {
00588 uint32_t signum;
00589 BG_ThreadID_t threadID;
00590 BG_Addr_t instAddress;
00591 BG_Addr_t dataAddress;
00592 NotifySignalReason reason;
00593 } signal;
00594 struct {
00595 int exitStatus;
00596 } termination;
00597 struct {
00598 uint32_t toolid;
00599 char toolTag[ToolTagSize];
00600 uint8_t priority;
00601 NotifyControlReason reason;
00602 } control;
00603 } type;
00604 };
00605
00606
00607
00608 struct NotifyAckMessage : public ToolMessage
00609 {
00610 };
00611
00612
00613
00614 struct BG_Stack_Info
00615 {
00616 BG_Addr_t frameAddr;
00617 BG_Addr_t savedLR;
00618 };
00619
00620
00621
00622 struct BG_Debug_Regs
00623 {
00624 BG_Reg_t dbcr0;
00625 BG_Reg_t dbcr1;
00626 BG_Reg_t dbcr2;
00627 BG_Reg_t dbcr3;
00628 BG_Reg_t dac1;
00629 BG_Reg_t dac2;
00630 BG_Reg_t dac3;
00631 BG_Reg_t dac4;
00632 BG_Reg_t iac1;
00633 BG_Reg_t iac2;
00634 BG_Reg_t iac3;
00635 BG_Reg_t iac4;
00636 BG_Reg_t dbsr;
00637 };
00638
00639
00640
00641 struct BG_Special_Regs
00642 {
00643 BG_Reg_t iar;
00644 BG_Reg_t lr;
00645 BG_Reg_t msr;
00646 BG_Reg_t cr;
00647 BG_Reg_t ctr;
00648 BG_Reg_t xer;
00649 BG_Reg_t fpscr;
00650 BG_Reg_t dear;
00651 BG_Reg_t esr;
00652 };
00653
00654
00655
00656 class ToolCommand
00657 {
00658 public:
00659 BG_ThreadID_t threadID;
00660 };
00661
00662
00663
00664 struct GetSpecialRegsCmd : public ToolCommand
00665 {
00666 };
00667
00668
00669
00670 struct GetSpecialRegsAckCmd : public ToolCommand
00671 {
00672 BG_Special_Regs sregs;
00673 };
00674
00675
00676
00677 struct GetGeneralRegsCmd : public ToolCommand
00678 {
00679 };
00680
00681
00682
00683 struct GetGeneralRegsAckCmd : public ToolCommand
00684 {
00685 BG_Reg_t gpr[NumGPRegs];
00686 };
00687
00688
00689
00690 struct GetFloatRegsCmd : public ToolCommand
00691 {
00692 };
00693
00694
00695
00696 struct GetFloatRegsAckCmd : public ToolCommand
00697 {
00698 BG_Float fpr[NumFPRegs];
00699 };
00700
00701
00702
00703 struct GetDebugRegsCmd : public ToolCommand
00704 {
00705 };
00706
00707
00708
00709 struct GetDebugRegsAckCmd : public ToolCommand
00710 {
00711 BG_Debug_Regs dbregs;
00712 };
00713
00714
00715
00716 struct GetMemoryCmd : public ToolCommand
00717 {
00718 BG_Addr_t addr;
00719 uint32_t length;
00720 SpecAccess specAccess;
00721 };
00722
00723
00724
00725 struct GetMemoryAckCmd : public ToolCommand
00726 {
00727 BG_Addr_t addr;
00728 uint32_t length;
00729 unsigned char data[0];
00730 };
00731
00732
00733
00734 struct GetAuxVectorsCmd : public ToolCommand
00735 {
00736 };
00737
00738
00739
00740 struct GetAuxVectorsAckCmd : public ToolCommand
00741 {
00742 uint32_t length;
00743 uint64_t data[MaxAuxVecDWords];
00744 };
00745
00746
00747
00748 struct GetProcessDataCmd : public ToolCommand
00749 {
00750 };
00751
00752
00753
00754 struct GetProcessDataAckCmd : public ToolCommand
00755 {
00756 uint32_t rank;
00757 uint32_t tgid;
00758 uint32_t aCoord;
00759 uint32_t bCoord;
00760 uint32_t cCoord;
00761 uint32_t dCoord;
00762 uint32_t eCoord;
00763 uint32_t tCoord;
00764 BG_Addr_t sharedMemoryStartAddr;
00765 BG_Addr_t sharedMemoryEndAddr;
00766 BG_Addr_t persistMemoryStartAddr;
00767 BG_Addr_t persistMemoryEndAddr;
00768 BG_Addr_t heapStartAddr;
00769 BG_Addr_t heapEndAddr;
00770 BG_Addr_t heapBreakAddr;
00771 BG_Addr_t mmapStartAddr;
00772 BG_Addr_t mmapEndAddr;
00773 struct timeval jobTime;
00774 };
00775
00776
00777
00778 struct GetThreadDataCmd : public ToolCommand
00779 {
00780 };
00781
00782
00783
00784
00785 struct GetThreadDataAckCmd : public ToolCommand
00786 {
00787 int core;
00788 int thread;
00789 BG_Thread_State state;
00790 BG_Thread_ToolState toolState;
00791 BG_Thread_SpecState specState;
00792 BG_Addr_t guardStartAddr;
00793 BG_Addr_t guardEndAddr;
00794 BG_Addr_t stackStartAddr;
00795 BG_Addr_t stackCurrentAddr;
00796 uint32_t numStackFrames;
00797 BG_Stack_Info stackInfo[MaxStackFrames];
00798 };
00799
00800
00801
00802 struct GetThreadListCmd : public ToolCommand
00803 {
00804 };
00805
00806
00807
00808 struct GetThreadListAckCmd : public ToolCommand
00809 {
00810 uint32_t numthreads;
00811 struct
00812 {
00813 uint32_t tid;
00814 struct
00815 {
00816 uint32_t commthread : 1;
00817 uint32_t unused : 31;
00818 } info;
00819 } threadlist[MaxThreadIds];
00820 };
00821
00822
00823
00824 struct SendSignalCmd : public ToolCommand
00825 {
00826 uint32_t signum;
00827 };
00828
00829
00830
00831 struct SendSignalAckCmd : public ToolCommand
00832 {
00833 };
00834
00835
00836
00837 struct SetSpecialRegCmd : public ToolCommand
00838 {
00839 SpecialRegSelect reg_select;
00840 BG_Reg_t value;
00841 };
00842
00843
00844
00845 struct SetSpecialRegAckCmd : public ToolCommand
00846 {
00847 };
00848
00849
00850
00851 struct SetGeneralRegCmd : public ToolCommand
00852 {
00853 GeneralRegSelect reg_select;
00854 BG_Reg_t value;
00855 };
00856
00857
00858
00859 struct SetGeneralRegAckCmd : public ToolCommand
00860 {
00861 };
00862
00863
00864
00865 struct SetGeneralRegsCmd : public ToolCommand
00866 {
00867 BG_Reg_t gpr[NumGPRegs];
00868 };
00869
00870
00871
00872 struct SetGeneralRegsAckCmd : public ToolCommand
00873 {
00874 };
00875
00876
00877
00878 struct SetFloatRegCmd : public ToolCommand
00879 {
00880 FloatRegSelect reg_select;
00881 BG_Float value;
00882
00883 };
00884
00885
00886
00887 struct SetFloatRegAckCmd : public ToolCommand
00888 {
00889 };
00890
00891
00892
00893 struct SetFloatRegsCmd : public ToolCommand
00894 {
00895 BG_Float fpr[NumFPRegs];
00896 };
00897
00898
00899
00900 struct SetFloatRegsAckCmd : public ToolCommand
00901 {
00902 };
00903
00904
00905
00906 struct SetDebugRegCmd : public ToolCommand
00907 {
00908 DebugRegSelect reg_select;
00909 BG_Reg_t value;
00910 };
00911
00912
00913
00914 struct SetDebugRegAckCmd : public ToolCommand
00915 {
00916 };
00917
00918
00919
00920 struct SetDebugRegsCmd : public ToolCommand
00921 {
00922 BG_Debug_Regs dbregs;
00923 };
00924
00925
00926
00927 struct SetDebugRegsAckCmd : public ToolCommand
00928 {
00929 };
00930
00931
00932
00933 struct SetSpecialRegsCmd : public ToolCommand
00934 {
00935 BG_Special_Regs sregs;
00936 };
00937
00938
00939
00940 struct SetSpecialRegsAckCmd : public ToolCommand
00941 {
00942 };
00943
00944
00945
00946 struct SetMemoryCmd : public ToolCommand
00947 {
00948 BG_Addr_t addr;
00949 uint32_t length;
00950 SpecAccess specAccess;
00951 SharedMemoryAccess sharedMemoryAccess;
00952 unsigned char data[0];
00953 };
00954
00955
00956
00957 struct SetMemoryAckCmd : public ToolCommand
00958 {
00959 BG_Addr_t addr;
00960 uint32_t length;
00961 };
00962
00963
00964
00965 struct HoldThreadCmd : public ToolCommand
00966 {
00967 };
00968
00969
00970
00971 struct HoldThreadAckCmd : public ToolCommand
00972 {
00973 };
00974
00975
00976
00977 struct ReleaseThreadCmd : public ToolCommand
00978 {
00979 };
00980
00981
00982
00983 struct ReleaseThreadAckCmd : public ToolCommand
00984 {
00985 };
00986
00987
00988
00989 struct ReleaseAllThreadsCmd : public ToolCommand
00990 {
00991 };
00992
00993
00994
00995 struct ReleaseAllThreadsAckCmd : public ToolCommand
00996 {
00997 };
00998
00999
01000
01001 struct InstallTrapHandlerCmd : public ToolCommand
01002 {
01003 void (*trap_handler)(int, siginfo_t *, void *);
01004 };
01005
01006
01007
01008 struct InstallTrapHandlerAckCmd : public ToolCommand
01009 {
01010 };
01011
01012
01013
01014 struct RemoveTrapHandlerCmd : public ToolCommand
01015 {
01016 };
01017
01018
01019
01020 struct RemoveTrapHandlerAckCmd : public ToolCommand
01021 {
01022 };
01023
01024
01025
01026 struct AllocateMemoryCmd : public ToolCommand
01027 {
01028 size_t alloc_size;
01029 };
01030
01031
01032
01033 struct AllocateMemoryAckCmd : public ToolCommand
01034 {
01035 void *alloc_addr;
01036 };
01037
01038
01039
01040 struct FreeMemoryCmd : public ToolCommand
01041 {
01042 void *alloc_addr;
01043 size_t alloc_size;
01044 };
01045
01046
01047
01048 struct FreeMemoryAckCmd : public ToolCommand
01049 {
01050 };
01051
01052
01053
01054 struct SetSignalMaskCmd : public ToolCommand
01055 {
01056 };
01057
01058
01059
01060 struct SetSignalMaskAckCmd : public ToolCommand
01061 {
01062 };
01063
01064
01065
01066 struct ContinueProcessCmd : public ToolCommand
01067 {
01068 };
01069
01070
01071
01072 struct ContinueProcessAckCmd : public ToolCommand
01073 {
01074 };
01075
01076
01077
01078 struct StepThreadCmd : public ToolCommand
01079 {
01080 };
01081
01082
01083
01084 struct StepThreadAckCmd : public ToolCommand
01085 {
01086 };
01087
01088
01089
01090 struct SetBreakpointCmd : public ToolCommand
01091 {
01092 BG_Addr_t addr;
01093 uint32_t instruction;
01094 };
01095
01096
01097
01098 struct SetBreakpointAckCmd : public ToolCommand
01099 {
01100 };
01101
01102
01103
01104 struct ResetBreakpointCmd : public ToolCommand
01105 {
01106 BG_Addr_t addr;
01107 uint32_t instruction;
01108 };
01109
01110
01111
01112 struct ResetBreakpointAckCmd : public ToolCommand
01113 {
01114 };
01115
01116
01117
01118
01119
01120 struct SetWatchpointCmd : public ToolCommand
01121 {
01122 BG_Addr_t addr;
01123 uint32_t length;
01124 WatchType type;
01125 };
01126
01127
01128
01129 struct SetWatchpointAckCmd : public ToolCommand
01130 {
01131 };
01132
01133
01134
01135 struct ResetWatchpointCmd : public ToolCommand
01136 {
01137 BG_Addr_t addr;
01138 };
01139
01140
01141
01142 struct ResetWatchpointAckCmd : public ToolCommand
01143 {
01144 };
01145
01146
01147
01148 struct SetPreferencesCmd : public ToolCommand
01149 {
01150 FastBreakMode breakpointMode;
01151 FastWatchMode watchpointMode;
01152 DACTrapMode dacMode;
01153 };
01154
01155
01156
01157 struct SetPreferencesAckCmd : public ToolCommand
01158 {
01159 };
01160
01161
01162 struct GetPreferencesCmd : public ToolCommand
01163 {
01164 };
01165
01166
01167
01168 struct GetPreferencesAckCmd : public ToolCommand
01169 {
01170 FastBreakMode breakpointMode;
01171 FastWatchMode watchpointMode;
01172 DACTrapMode dacMode;
01173 };
01174
01175
01176 struct GetFilenamesCmd : public ToolCommand
01177 {
01178 };
01179
01180
01181
01182 struct GetFilenamesAckCmd : public ToolCommand
01183 {
01184 uint32_t numFiles;
01185 char pathname[MaxPersistPathnames][MaxPersistPathnameSize];
01186 };
01187
01188
01189
01190 struct GetFileStatDataCmd : public ToolCommand
01191 {
01192 char pathname[MaxPersistPathnameSize];
01193 };
01194
01195
01196
01197 struct GetFileStatDataAckCmd : public ToolCommand
01198 {
01199 struct stat64 stat;
01200 };
01201
01202
01203
01204 struct GetFileContentsCmd : public ToolCommand
01205 {
01206 char pathname[MaxPersistPathnameSize];
01207 size_t offset;
01208 size_t numbytes;
01209 };
01210
01211
01212
01213 struct GetFileContentsAckCmd : public ToolCommand
01214 {
01215 size_t numbytes;
01216 char data[0];
01217 };
01218
01219
01220
01221 struct ReleaseControlCmd : public ToolCommand
01222 {
01223 ReleaseControlNotify notify;
01224 };
01225
01226
01227
01228 struct ReleaseControlAckCmd : public ToolCommand
01229 {
01230 };
01231
01232
01233
01234 struct SetContinuationSignalCmd : public ToolCommand
01235 {
01236 uint32_t signum;
01237 };
01238
01239
01240
01241 struct SetContinuationSignalAckCmd : public ToolCommand
01242 {
01243 };
01244
01245
01246 }
01247
01248 }
01249
01250 #endif // TOOLCTLMESSAGES_H
01251