00001
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081 #ifndef ProcMgr_H_0xf2ba
00082 #define ProcMgr_H_0xf2ba
00083
00084 #if defined (__cplusplus)
00085 extern "C" {
00086 #endif
00087
00088
00089
00090
00091
00092
00096 #define ProcMgr_S_SETUP 5
00097
00101 #define ProcMgr_S_OPENHANDLE 4
00102
00106 #define ProcMgr_S_ALREADYEXISTS 3
00107
00110 #define ProcMgr_S_BUSY 2
00111
00115 #define ProcMgr_S_ALREADYSETUP 1
00116
00120 #define ProcMgr_S_SUCCESS 0
00121
00125 #define ProcMgr_E_FAIL -1
00126
00130 #define ProcMgr_E_INVALIDARG -2
00131
00135 #define ProcMgr_E_MEMORY -3
00136
00140 #define ProcMgr_E_ALREADYEXISTS -4
00141
00145 #define ProcMgr_E_NOTFOUND -5
00146
00150 #define ProcMgr_E_TIMEOUT -6
00151
00155 #define ProcMgr_E_INVALIDSTATE -7
00156
00160 #define ProcMgr_E_OSFAILURE -8
00161
00165 #define ProcMgr_E_RESOURCE -9
00166
00170 #define ProcMgr_E_RESTART -10
00171
00175 #define ProcMgr_E_HANDLE -11
00176
00180 #define ProcMgr_E_ACCESSDENIED -12
00181
00185 #define ProcMgr_E_TRANSLATE -13
00186
00190 #define ProcMgr_E_SYMBOLNOTFOUND -14
00191
00195 #define ProcMgr_E_MAP -15
00196
00197
00198
00199
00200
00201
00205 #define IS_VALID_PROCID(id) (id < MultiProc_MAXPROCESSORS)
00206
00210 typedef struct ProcMgr_Object * ProcMgr_Handle;
00211
00212
00216 typedef enum {
00217 ProcMgr_State_Unknown = 0u,
00219 ProcMgr_State_Powered = 1u,
00221 ProcMgr_State_Reset = 2u,
00223 ProcMgr_State_Loaded = 3u,
00225 ProcMgr_State_Running = 4u,
00227 ProcMgr_State_Unavailable = 5u,
00229 ProcMgr_State_EndValue = 6u
00231 } ProcMgr_State ;
00232
00236 typedef enum {
00237 ProcMgr_BootMode_Boot = 0u,
00239 ProcMgr_BootMode_NoLoad_Pwr = 1u,
00242 ProcMgr_BootMode_NoLoad_NoPwr = 2u,
00246 ProcMgr_BootMode_NoBoot = 3u,
00250 ProcMgr_BootMode_EndValue = 4u
00252 } ProcMgr_BootMode ;
00253
00257 typedef enum {
00258 ProcMgr_AddrType_MasterKnlVirt = 0u,
00260 ProcMgr_AddrType_MasterUsrVirt = 1u,
00262 ProcMgr_AddrType_MasterPhys = 2u,
00264 ProcMgr_AddrType_SlaveVirt = 3u,
00266 ProcMgr_AddrType_SlavePhys = 4u,
00268 ProcMgr_AddrType_EndValue = 5u
00270 } ProcMgr_AddrType;
00271
00275 typedef UInt32 ProcMgr_MapMask;
00276
00280 #define ProcMgr_MASTERKNLVIRT (ProcMgr_MapMask)(1 << 0)
00281
00285 #define ProcMgr_MASTERUSRVIRT (ProcMgr_MapMask)(1 << 1)
00286
00290 #define ProcMgr_SLAVEVIRT (ProcMgr_MapMask)(1 << 2)
00291
00295 typedef struct ProcMgr_AttachParams_tag {
00296 ProcMgr_BootMode bootMode;
00298 Ptr bootParams;
00300 } ProcMgr_AttachParams ;
00301
00306 typedef struct ProcMgr_StartParams_tag {
00307 UInt32 reserved;
00309 } ProcMgr_StartParams ;
00310
00311
00316 typedef struct ProcMgr_AddrInfo_tag {
00317 UInt32 addr [ProcMgr_AddrType_EndValue];
00319 UInt32 size;
00321 Bool isCached;
00323 Bool isMapped;
00325 ProcMgr_MapMask mapMask;
00327 UInt16 refCount;
00330 } ProcMgr_AddrInfo;
00331
00335 typedef struct ProcMgr_MappedMemEntry {
00336 ProcMgr_AddrInfo info;
00338 ProcMgr_AddrType srcAddrType;
00340 ProcMgr_MapMask mapMask;
00342 Bool inUse;
00344 } ProcMgr_MappedMemEntry;
00345
00349 typedef struct ProcMgr_ProcInfo_tag {
00350 ProcMgr_BootMode bootMode;
00352 UInt16 maxMemoryRegions;
00354 UInt16 numMemEntries;
00356 ProcMgr_MappedMemEntry memEntries [0];
00358 } ProcMgr_ProcInfo;
00359
00360
00364 typedef struct ProcMgr_SectionInfo_tag {
00365 UInt32 physicalAddress;
00367 UInt32 virtualAddress;
00369 UInt16 sectId;
00371 UInt32 size;
00373 } ProcMgr_SectionInfo;
00374
00376
00377
00390 typedef Int (*ProcMgr_CallbackFxn) (UInt16 procId,
00391 ProcMgr_Handle handle,
00392 ProcMgr_State fromState,
00393 ProcMgr_State toState);
00394
00397
00398
00399
00400
00423 Int ProcMgr_open (ProcMgr_Handle * handlePtr, UInt16 procId);
00424
00446 Int ProcMgr_close (ProcMgr_Handle * handlePtr);
00447
00465 Void ProcMgr_getAttachParams (ProcMgr_Handle handle,
00466 ProcMgr_AttachParams * params);
00467
00513 Int ProcMgr_attach (ProcMgr_Handle handle, ProcMgr_AttachParams * params);
00514
00538 Int ProcMgr_detach (ProcMgr_Handle handle);
00539
00573 Int ProcMgr_load (ProcMgr_Handle handle,
00574 String imagePath,
00575 UInt32 argc,
00576 String * argv,
00577 Ptr params,
00578 UInt32 * fileId);
00579
00602 Int ProcMgr_unload (ProcMgr_Handle handle, UInt32 fileId);
00603
00622 Void ProcMgr_getStartParams (ProcMgr_Handle handle,
00623 ProcMgr_StartParams * params);
00624
00649 Int ProcMgr_start (ProcMgr_Handle handle, ProcMgr_StartParams * params);
00650
00668 Int ProcMgr_stop (ProcMgr_Handle handle);
00669
00682 ProcMgr_State ProcMgr_getState (ProcMgr_Handle handle);
00683
00715 Int ProcMgr_read (ProcMgr_Handle handle,
00716 UInt32 procAddr,
00717 UInt32 * numBytes,
00718 Ptr buffer);
00719
00748 Int ProcMgr_write (ProcMgr_Handle handle,
00749 UInt32 procAddr,
00750 UInt32 * numBytes,
00751 Ptr buffer);
00752
00771 Int ProcMgr_control (ProcMgr_Handle handle, Int32 cmd, Ptr arg);
00772
00796 Int ProcMgr_translateAddr (ProcMgr_Handle handle,
00797 Ptr * dstAddr,
00798 ProcMgr_AddrType dstAddrType,
00799 Ptr srcAddr,
00800 ProcMgr_AddrType srcAddrType);
00801
00818 Int ProcMgr_getSymbolAddress (ProcMgr_Handle handle,
00819 UInt32 fileId,
00820 String symbolName,
00821 UInt32 * symValue);
00822
00850 Int ProcMgr_map (ProcMgr_Handle handle,
00851 ProcMgr_MapMask mapMask,
00852 ProcMgr_AddrInfo * addrInfo,
00853 ProcMgr_AddrType srcAddrType);
00854
00887 Int ProcMgr_unmap (ProcMgr_Handle handle,
00888 ProcMgr_MapMask mapMask,
00889 ProcMgr_AddrInfo * addrInfo,
00890 ProcMgr_AddrType srcAddrType);
00891
00893
00915 Int ProcMgr_registerNotify (ProcMgr_Handle handle,
00916 ProcMgr_CallbackFxn fxn,
00917 Ptr args,
00918 ProcMgr_State state []);
00922
00923
00924
00925
00926
00927 UInt32
00928 ProcMgr_getMaxMemoryRegions (ProcMgr_Handle handle);
00929
00930
00943 Int ProcMgr_getProcInfo (ProcMgr_Handle handle,
00944 ProcMgr_ProcInfo * procInfo);
00945
00946
00962 Int ProcMgr_getSectionInfo (ProcMgr_Handle handle,
00963 UInt32 fileId,
00964 String sectionName,
00965 ProcMgr_SectionInfo * sectionInfo);
00966
00967
00968
00969
00970
00971
00972
00973
00974
00975
00976
00977
00978
00979
00980
00981
00982
00983 Int ProcMgr_getSectionData (ProcMgr_Handle handle,
00984 UInt32 fileId,
00985 ProcMgr_SectionInfo * sectionInfo,
00986 Ptr buffer);
00987
00988
00989
00990
00991
00992
00993
00994
00995
00996
00997
00998 UInt32 ProcMgr_getLoadedFileId (ProcMgr_Handle handle);
00999
01000
01001 #if defined (__cplusplus)
01002 }
01003 #endif
01004
01005 #endif