/* begincopyright Copyright (c) 1988 Xerox Corporation. All rights reserved. Use and copying of this software and preparation of derivative works based upon this software are permitted. Any distribution of this software or derivative works must comply with all applicable United States export control laws. This software is made available AS IS, and Xerox Corporation makes no warranty about the software, its performance or its conformity to any specification. Any person obtaining a copy of this software is requested to send their name and post office or electronic mail address to: PCR Coordinator Xerox PARC 3333 Coyote Hill Rd. Palo Alto, CA 94304 endcopyright */ /* * CirioNubProcs.h * * Demers, February 25, 1992 1:45:55 pm PST * * CirioNub remote procedure numbers and descriptions. */ #ifndef _CIRIO_NUB_PROCS_ #define _CIRIO_NUB_PROCS_ #include "xr/CirioNubProtocol.h" /* * Client CirioNubProcs */ #define CIRIO_NUB_PROCS_LOW_VERSION 5 #define CIRIO_NUB_PROCS_VERSION 7 /* unsigned Null ( unsigned desiredVersion ); Return the "best" Cirio nub version number exported by this nub. */ extern CirioNubRetCode CirioNubServeNull(/* int argc, unsigned *args */); #define CirioNubProcID_Null 0 /* struct { bool sigWasReceived; XR_DBStat dbStat } WaitSig ( unsigned timeoutMsec ); Wait at most timeoutMsec milliseconds for signal from debugee to nub. */ extern CirioNubRetCode CirioNubServeWaitSig(/* int argc, unsigned *args */); #define CirioNubProcID_WaitSig 1 /* int SetDBStat ( XR_DBStat stat, unsigned timeoutMsec ); Set DBStat of debuggee world (all processors). Debuggee may refuse; try for no more than the specified time. Return ( (success) ? 0 : -1 ) */ extern CirioNubRetCode CirioNubServeSetDBStat(/* int argc, unsigned *args */); #define CirioNubProcID_SetDBStat 2 /* Block8 GetBytes ( char *addr, int nBytes ); Read from debuggee address space. Return ( (success) ? desired bytes : a null block ) */ extern CirioNubRetCode CirioNubServeGetBytes(/* int argc, unsigned *args */); #define CirioNubProcID_GetBytes 3 /* int PutBytes ( char *addr, Block8 bytes ); Write into debuggee address space. Return ( (success) ? 0 : nonzero ) */ extern CirioNubRetCode CirioNubServePutBytes(/* int argc, unsigned *args */); #define CirioNubProcID_PutBytes 4 /* Block16 GetWords16 ( char *addr, int nBytes ); Read from debuggee address space. Return ( (success) ? desired bytes : a null block ) */ extern CirioNubRetCode CirioNubServeGetWords16(/* int argc, unsigned *args */); #define CirioNubProcID_GetWords16 5 /* int PutWords16 ( char *addr, Block16 bytes ); Write into debuggee address space. Return ( (success) ? 0 : nonzero ) */ extern CirioNubRetCode CirioNubServePutWords16(/* int argc, unsigned *args */); #define CirioNubProcID_PutWords16 6 /* Block32 GetWords32 ( char *addr, int nBytes ); Read from debuggee address space. Return ( (success) ? desired bytes : a null block ) */ extern CirioNubRetCode CirioNubServeGetWords32(/* int argc, unsigned *args */); #define CirioNubProcID_GetWords32 7 /* int PutWords32 ( caddr_t addr, Block32 bytes ); Write into debuggee address space. Return ( (success) ? 0 : nonzero ) */ extern CirioNubRetCode CirioNubServePutWords32(/* int argc, unsigned *args */); #define CirioNubProcID_PutWords32 8 /* GetThreads ( int low, int high ); Return a struct CirioNubThreadDataRep for each active thread in range. Special Case: if (low < 0) return struct CirioNubThreadDataRep for thread whose index is (-low), whether active or not. If (-low) is out of range, return an empty block. Note high is ignored in this case. */ extern CirioNubRetCode CirioNubServeGetThreads(/* int argc, unsigned *args */); #define CirioNubProcID_GetThreads 9 /* struct CirioNubPCInfoRep PCtoInfo ( caddr_t addr ); Map absolute pc to info. */ extern CirioNubRetCode CirioNubServePCtoInfo(/* int argc, unsigned *args */); #define CirioNubProcID_PCtoInfo 10 /* void KillWorld ( ); Kill the PCR world, cleaning up as much as possible. Breaks the Cirio connection after returning. */ extern CirioNubRetCode CirioNubServeKillWorld( ); #define CirioNubProcID_KillWorld 11 /* Remote file I/O, WITHDRAWN: 12 ... 17 */ /* int IssueThreadCommand ( int threadIndex, bool setFreeze, bool freeze, bool setMsg, int msg ); Set dbFreeze and dbMsg fields of specified thread. Return ( success ? 0 : nonzero ). */ extern CirioNubRetCode CirioNubServeIssueThreadCommand( ); #define CirioNubProcID_IssueThreadCommand 18 /* struct { int dbStat, int examineeIndex; } GetDBStat ( int oldstat, int oldExamineeIndex, unsigned timeoutMsec ); Return system dbStat value and index of thread currently being examined (for dbx). Index < 0 ==> no thread being examined. Wait for the values to change from the old values, or for timeout. */ extern CirioNubRetCode CirioNubServeGetDBStat( ); #define CirioNubProcID_GetDBStat 19 /* * For the following procs, consult IncrementalLoad.h */ /* struct CirioNubFileEntryRep GetFileEntry ( unsigned seqNum ); Return file entry with largest seqNum <= the specified one. Claim: can't fail. */ extern CirioNubRetCode CirioNubServeGetFileEntry( ); #define CirioNubProcID_GetFileEntry 20 /* Procs 21 - 25 are OBSOLETE and will be withdrawn soon ... use procs 26-27 instead. January 12, 1990 1:01:18 pm PST Isn't it amazing that "soon" still hasn't come?! - ajd March 3, 1992 6:41:33 pm PST */ /* struct LookupSymEntryResultRep { int errCode; union(errCode) { case 0: struct SymEntry symEntry; default: void } }; struct CirioNubLookupSymEntryResultRep LookupSymEntryByName( char *sym, bool caseSensitive, bool externOnly, int numToSkip ); */ extern CirioNubRetCode CirioNubServeLookupSymEntryByName( ); #define CirioNubProcID_LookupSymEntryByName 21 /* struct LookupSymEntryResult LookupSymEntryByValue( unsigned val, int numToSkip ); (numToSkip == 0) ~ GetLatestByValue (numToSkip > 0) ~ GetNextByValue (numToSkip < 0) ~ GetPrevByValue */ extern CirioNubRetCode CirioNubServeLookupSymEntryByValue( ); #define CirioNubProcID_LookupSymEntryByValue 22 /* struct LookupSymEntryResult LookupSymEntryByID( unsigned symID ); */ extern CirioNubRetCode CirioNubServeLookupSymEntryByID( ); #define CirioNubProcID_LookupSymEntryByID 23 /* struct LookupSymEntryResult SkipSymEntryByName( unsigned symID, bool caseSensitive, bool externOnly, int numToSkip ); */ extern CirioNubRetCode CirioNubServeSkipSymEntryByName( ); #define CirioNubProcID_SkipSymEntryByName 24 /* struct LookupSymEntryResult SkipSymEntryByValue( unsigned symID, int numToSkip ); (numToSkip > 0) ~ GetNextByValue (numToSkip < 0) ~ GetPrevByValue */ extern CirioNubRetCode CirioNubServeSkipSymEntryByValue( ); #define CirioNubProcID_SkipSymEntryByValue 25 /* END of the group of obsolete procedures. */ /* struct LookupSymEntryResult GetMatchingSymEntryByName( unsigned symID, char *pattern, bool caseSensitive, unsigned wantedTypes, unsigned ignoredClasses, int numToSkip ); Like XR_ILGetMatchingSymEntryByName */ extern CirioNubRetCode CirioNubServeGetMatchingSymEntryByName( ); #define CirioNubProcID_GetMatchingSymEntryByName 26 /* struct LookupSymEntryResult GetMatchingSymEntryByValue( unsigned symID, unsigned val, unsigned wantedTypes, unsigned ignoredClasses, int numToSkip ); Like XR_ILGetMatchingSymEntryByValue */ extern CirioNubRetCode CirioNubServeGetMatchingSymEntryByValue( ); #define CirioNubProcID_GetMatchingSymEntryByValue 27 /* unsigned GetMaxThreads ( ); Return max number of threads supported (This is 1 greater than max allowable thread index) */ extern CirioNubRetCode CirioNubServeGetMaxThreads( ); #define CirioNubProcID_GetMaxThreads 28 /* struct CirioNubThreadDataRep GetThreadFromCTRep ( struct XR_CTRep ctr ); Return a struct CirioNubThreadDataRep for specified thread on debuggee. */ extern CirioNubRetCode CirioNubServeGetThreadFromCTRep( ); #define CirioNubProcID_GetThreadFromCTRep 29 /* struct CirioNubInstrSetAndOpSysRep GetInstrSetAndOpSys( ); Return a struct CirioNubInstrSetAndOpSysRep identifying debuggee's instruction set and operating system. These are represented as agreed-upon strings. */ extern CirioNubRetCode CirioNubServeGetInstrSetAndOpSys( ); #define CirioNubProcID_GetInstrSetAndOpSys 30 #define CirioNubProcID_Last 30 #endif /* _CIRIO_NUB_PROCS_ */