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 32u
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
00508 Int ProcMgr_attach (ProcMgr_Handle handle, ProcMgr_AttachParams * params);
00509
00533 Int ProcMgr_detach (ProcMgr_Handle handle);
00534
00568 Int ProcMgr_load (ProcMgr_Handle handle,
00569 String imagePath,
00570 UInt32 argc,
00571 String * argv,
00572 Ptr params,
00573 UInt32 * fileId);
00574
00597 Int ProcMgr_unload (ProcMgr_Handle handle, UInt32 fileId);
00598
00617 Void ProcMgr_getStartParams (ProcMgr_Handle handle,
00618 ProcMgr_StartParams * params);
00619
00644 Int ProcMgr_start (ProcMgr_Handle handle, ProcMgr_StartParams * params);
00645
00663 Int ProcMgr_stop (ProcMgr_Handle handle);
00664
00677 ProcMgr_State ProcMgr_getState (ProcMgr_Handle handle);
00678
00710 Int ProcMgr_read (ProcMgr_Handle handle,
00711 UInt32 procAddr,
00712 UInt32 * numBytes,
00713 Ptr buffer);
00714
00743 Int ProcMgr_write (ProcMgr_Handle handle,
00744 UInt32 procAddr,
00745 UInt32 * numBytes,
00746 Ptr buffer);
00747
00766 Int ProcMgr_control (ProcMgr_Handle handle, Int32 cmd, Ptr arg);
00767
00791 Int ProcMgr_translateAddr (ProcMgr_Handle handle,
00792 Ptr * dstAddr,
00793 ProcMgr_AddrType dstAddrType,
00794 Ptr srcAddr,
00795 ProcMgr_AddrType srcAddrType);
00796
00813 Int ProcMgr_getSymbolAddress (ProcMgr_Handle handle,
00814 UInt32 fileId,
00815 String symbolName,
00816 UInt32 * symValue);
00817
00845 Int ProcMgr_map (ProcMgr_Handle handle,
00846 ProcMgr_MapMask mapMask,
00847 ProcMgr_AddrInfo * addrInfo,
00848 ProcMgr_AddrType srcAddrType);
00849
00882 Int ProcMgr_unmap (ProcMgr_Handle handle,
00883 ProcMgr_MapMask mapMask,
00884 ProcMgr_AddrInfo * addrInfo,
00885 ProcMgr_AddrType srcAddrType);
00886
00888
00910 Int ProcMgr_registerNotify (ProcMgr_Handle handle,
00911 ProcMgr_CallbackFxn fxn,
00912 Ptr args,
00913 ProcMgr_State state []);
00928 Int ProcMgr_getProcInfo (ProcMgr_Handle handle,
00929 ProcMgr_ProcInfo * procInfo);
00930
00931
00947 Int ProcMgr_getSectionInfo (ProcMgr_Handle handle,
00948 UInt32 fileId,
00949 String sectionName,
00950 ProcMgr_SectionInfo * sectionInfo);
00951
00952
00953
00954
00955
00956
00957
00958
00959
00960
00961
00962
00963
00964
00965
00966
00967
00968 Int ProcMgr_getSectionData (ProcMgr_Handle handle,
00969 UInt32 fileId,
00970 ProcMgr_SectionInfo * sectionInfo,
00971 Ptr buffer);
00972
00973
00974
00975
00976
00977
00978
00979
00980
00981
00982
00983 UInt32 ProcMgr_getLoadedFileId (ProcMgr_Handle handle);
00984
00985
00986 #if defined (__cplusplus)
00987 }
00988 #endif
00989
00990 #endif