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 ProcMgr_MAX_MEMORY_REGIONS 96u
00206
00210 #define IS_VALID_PROCID(id) (id < MultiProc_MAXPROCESSORS)
00211
00215 typedef struct ProcMgr_Object * ProcMgr_Handle;
00216
00217
00221 typedef enum {
00222 ProcMgr_State_Unknown = 0u,
00224 ProcMgr_State_Powered = 1u,
00226 ProcMgr_State_Reset = 2u,
00228 ProcMgr_State_Loaded = 3u,
00230 ProcMgr_State_Running = 4u,
00232 ProcMgr_State_Unavailable = 5u,
00234 ProcMgr_State_EndValue = 6u
00236 } ProcMgr_State ;
00237
00241 typedef enum {
00242 ProcMgr_BootMode_Boot = 0u,
00244 ProcMgr_BootMode_NoLoad_Pwr = 1u,
00247 ProcMgr_BootMode_NoLoad_NoPwr = 2u,
00251 ProcMgr_BootMode_NoBoot = 3u,
00255 ProcMgr_BootMode_EndValue = 4u
00257 } ProcMgr_BootMode ;
00258
00262 typedef enum {
00263 ProcMgr_AddrType_MasterKnlVirt = 0u,
00265 ProcMgr_AddrType_MasterUsrVirt = 1u,
00267 ProcMgr_AddrType_MasterPhys = 2u,
00269 ProcMgr_AddrType_SlaveVirt = 3u,
00271 ProcMgr_AddrType_SlavePhys = 4u,
00273 ProcMgr_AddrType_EndValue = 5u
00275 } ProcMgr_AddrType;
00276
00280 typedef UInt32 ProcMgr_MapMask;
00281
00285 #define ProcMgr_MASTERKNLVIRT (ProcMgr_MapMask)(1 << 0)
00286
00290 #define ProcMgr_MASTERUSRVIRT (ProcMgr_MapMask)(1 << 1)
00291
00295 #define ProcMgr_SLAVEVIRT (ProcMgr_MapMask)(1 << 2)
00296
00300 typedef struct ProcMgr_AttachParams_tag {
00301 ProcMgr_BootMode bootMode;
00303 Ptr bootParams;
00305 } ProcMgr_AttachParams ;
00306
00311 typedef struct ProcMgr_StartParams_tag {
00312 UInt32 reserved;
00314 } ProcMgr_StartParams ;
00315
00316
00321 typedef struct ProcMgr_AddrInfo_tag {
00322 UInt32 addr [ProcMgr_AddrType_EndValue];
00324 UInt32 size;
00326 Bool isCached;
00328 Bool isMapped;
00330 ProcMgr_MapMask mapMask;
00332 UInt16 refCount;
00335 } ProcMgr_AddrInfo;
00336
00340 typedef struct ProcMgr_MappedMemEntry {
00341 ProcMgr_AddrInfo info;
00343 ProcMgr_AddrType srcAddrType;
00345 ProcMgr_MapMask mapMask;
00347 Bool inUse;
00349 } ProcMgr_MappedMemEntry;
00350
00354 typedef struct ProcMgr_ProcInfo_tag {
00355 ProcMgr_BootMode bootMode;
00357 UInt16 numMemEntries;
00359 ProcMgr_MappedMemEntry memEntries [ProcMgr_MAX_MEMORY_REGIONS];
00361 } ProcMgr_ProcInfo;
00362
00363
00367 typedef struct ProcMgr_SectionInfo_tag {
00368 UInt32 physicalAddress;
00370 UInt32 virtualAddress;
00372 UInt16 sectId;
00374 UInt32 size;
00376 } ProcMgr_SectionInfo;
00377
00379
00380
00393 typedef Int (*ProcMgr_CallbackFxn) (UInt16 procId,
00394 ProcMgr_Handle handle,
00395 ProcMgr_State fromState,
00396 ProcMgr_State toState);
00397
00400
00401
00402
00403
00426 Int ProcMgr_open (ProcMgr_Handle * handlePtr, UInt16 procId);
00427
00449 Int ProcMgr_close (ProcMgr_Handle * handlePtr);
00450
00468 Void ProcMgr_getAttachParams (ProcMgr_Handle handle,
00469 ProcMgr_AttachParams * params);
00470
00516 Int ProcMgr_attach (ProcMgr_Handle handle, ProcMgr_AttachParams * params);
00517
00541 Int ProcMgr_detach (ProcMgr_Handle handle);
00542
00576 Int ProcMgr_load (ProcMgr_Handle handle,
00577 String imagePath,
00578 UInt32 argc,
00579 String * argv,
00580 Ptr params,
00581 UInt32 * fileId);
00582
00605 Int ProcMgr_unload (ProcMgr_Handle handle, UInt32 fileId);
00606
00625 Void ProcMgr_getStartParams (ProcMgr_Handle handle,
00626 ProcMgr_StartParams * params);
00627
00652 Int ProcMgr_start (ProcMgr_Handle handle, ProcMgr_StartParams * params);
00653
00671 Int ProcMgr_stop (ProcMgr_Handle handle);
00672
00685 ProcMgr_State ProcMgr_getState (ProcMgr_Handle handle);
00686
00718 Int ProcMgr_read (ProcMgr_Handle handle,
00719 UInt32 procAddr,
00720 UInt32 * numBytes,
00721 Ptr buffer);
00722
00751 Int ProcMgr_write (ProcMgr_Handle handle,
00752 UInt32 procAddr,
00753 UInt32 * numBytes,
00754 Ptr buffer);
00755
00774 Int ProcMgr_control (ProcMgr_Handle handle, Int32 cmd, Ptr arg);
00775
00799 Int ProcMgr_translateAddr (ProcMgr_Handle handle,
00800 Ptr * dstAddr,
00801 ProcMgr_AddrType dstAddrType,
00802 Ptr srcAddr,
00803 ProcMgr_AddrType srcAddrType);
00804
00821 Int ProcMgr_getSymbolAddress (ProcMgr_Handle handle,
00822 UInt32 fileId,
00823 String symbolName,
00824 UInt32 * symValue);
00825
00853 Int ProcMgr_map (ProcMgr_Handle handle,
00854 ProcMgr_MapMask mapMask,
00855 ProcMgr_AddrInfo * addrInfo,
00856 ProcMgr_AddrType srcAddrType);
00857
00890 Int ProcMgr_unmap (ProcMgr_Handle handle,
00891 ProcMgr_MapMask mapMask,
00892 ProcMgr_AddrInfo * addrInfo,
00893 ProcMgr_AddrType srcAddrType);
00894
00896
00918 Int ProcMgr_registerNotify (ProcMgr_Handle handle,
00919 ProcMgr_CallbackFxn fxn,
00920 Ptr args,
00921 ProcMgr_State state []);
00936 Int ProcMgr_getProcInfo (ProcMgr_Handle handle,
00937 ProcMgr_ProcInfo * procInfo);
00938
00939
00955 Int ProcMgr_getSectionInfo (ProcMgr_Handle handle,
00956 UInt32 fileId,
00957 String sectionName,
00958 ProcMgr_SectionInfo * sectionInfo);
00959
00960
00961
00962
00963
00964
00965
00966
00967
00968
00969
00970
00971
00972
00973
00974
00975
00976 Int ProcMgr_getSectionData (ProcMgr_Handle handle,
00977 UInt32 fileId,
00978 ProcMgr_SectionInfo * sectionInfo,
00979 Ptr buffer);
00980
00981
00982
00983
00984
00985
00986
00987
00988
00989
00990
00991 UInt32 ProcMgr_getLoadedFileId (ProcMgr_Handle handle);
00992
00993
00994 #if defined (__cplusplus)
00995 }
00996 #endif
00997
00998 #endif