00001
00036
00037
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 #ifndef ProcMgr_H_0xf2ba
00080 #define ProcMgr_H_0xf2ba
00081
00082 #if defined (__cplusplus)
00083 extern "C" {
00084 #endif
00085
00086
00087
00088
00089
00090
00094 #define ProcMgr_S_SETUP 5
00095
00099 #define ProcMgr_S_OPENHANDLE 4
00100
00104 #define ProcMgr_S_ALREADYEXISTS 3
00105
00108 #define ProcMgr_S_BUSY 2
00109
00113 #define ProcMgr_S_ALREADYSETUP 1
00114
00118 #define ProcMgr_S_SUCCESS 0
00119
00123 #define ProcMgr_E_FAIL -1
00124
00128 #define ProcMgr_E_INVALIDARG -2
00129
00133 #define ProcMgr_E_MEMORY -3
00134
00138 #define ProcMgr_E_ALREADYEXISTS -4
00139
00143 #define ProcMgr_E_NOTFOUND -5
00144
00148 #define ProcMgr_E_TIMEOUT -6
00149
00153 #define ProcMgr_E_INVALIDSTATE -7
00154
00158 #define ProcMgr_E_OSFAILURE -8
00159
00163 #define ProcMgr_E_RESOURCE -9
00164
00168 #define ProcMgr_E_RESTART -10
00169
00173 #define ProcMgr_E_HANDLE -11
00174
00178 #define ProcMgr_E_ACCESSDENIED -12
00179
00183 #define ProcMgr_E_TRANSLATE -13
00184
00188 #define ProcMgr_E_SYMBOLNOTFOUND -14
00189
00193 #define ProcMgr_E_MAP -15
00194
00195
00196
00197
00198
00199
00203 #define IS_VALID_PROCID(id) (id < MultiProc_MAXPROCESSORS)
00204
00208 typedef struct ProcMgr_Object * ProcMgr_Handle;
00209
00210
00214 typedef enum {
00215 ProcMgr_State_Unknown = 0u,
00217 ProcMgr_State_Powered = 1u,
00219 ProcMgr_State_Reset = 2u,
00221 ProcMgr_State_Loaded = 3u,
00223 ProcMgr_State_Running = 4u,
00225 ProcMgr_State_Unavailable = 5u,
00227 ProcMgr_State_EndValue = 6u
00229 } ProcMgr_State ;
00230
00234 typedef enum {
00235 ProcMgr_BootMode_Boot = 0u,
00237 ProcMgr_BootMode_NoLoad_Pwr = 1u,
00239 ProcMgr_BootMode_NoLoad_NoPwr = 2u,
00241 ProcMgr_BootMode_NoBoot = 3u,
00247 ProcMgr_BootMode_EndValue = 4u
00249 } ProcMgr_BootMode ;
00250
00254 typedef enum {
00255 ProcMgr_AddrType_MasterKnlVirt = 0u,
00257 ProcMgr_AddrType_MasterUsrVirt = 1u,
00259 ProcMgr_AddrType_MasterPhys = 2u,
00261 ProcMgr_AddrType_SlaveVirt = 3u,
00263 ProcMgr_AddrType_SlavePhys = 4u,
00265 ProcMgr_AddrType_EndValue = 5u
00267 } ProcMgr_AddrType;
00268
00272 typedef UInt32 ProcMgr_MapMask;
00273
00277 #define ProcMgr_MASTERKNLVIRT (ProcMgr_MapMask)(1 << 0)
00278
00282 #define ProcMgr_MASTERUSRVIRT (ProcMgr_MapMask)(1 << 1)
00283
00287 #define ProcMgr_SLAVEVIRT (ProcMgr_MapMask)(1 << 2)
00288
00292 typedef struct ProcMgr_AttachParams_tag {
00293 ProcMgr_BootMode bootMode;
00295 Ptr bootParams;
00297 } ProcMgr_AttachParams ;
00298
00303 typedef struct ProcMgr_StartParams_tag {
00304 UInt32 reserved;
00306 } ProcMgr_StartParams ;
00307
00308
00313 typedef struct ProcMgr_AddrInfo_tag {
00314 UInt32 addr [ProcMgr_AddrType_EndValue];
00316 UInt32 size;
00318 Bool isCached;
00320 Bool isMapped;
00322 ProcMgr_MapMask mapMask;
00324 UInt16 refCount;
00327 } ProcMgr_AddrInfo;
00328
00332 typedef struct ProcMgr_MappedMemEntry {
00333 ProcMgr_AddrInfo info;
00335 ProcMgr_AddrType srcAddrType;
00337 ProcMgr_MapMask mapMask;
00339 Bool inUse;
00341 } ProcMgr_MappedMemEntry;
00342
00346 typedef struct ProcMgr_ProcInfo_tag {
00347 ProcMgr_BootMode bootMode;
00349 UInt16 maxMemoryRegions;
00351 UInt16 numMemEntries;
00353 ProcMgr_MappedMemEntry memEntries [0];
00355 } ProcMgr_ProcInfo;
00356
00357
00361 typedef struct ProcMgr_SectionInfo_tag {
00362 UInt32 physicalAddress;
00364 UInt32 virtualAddress;
00366 UInt16 sectId;
00368 UInt32 size;
00370 } ProcMgr_SectionInfo;
00371
00372
00373
00374
00375
00376
00399 Int ProcMgr_open (ProcMgr_Handle * handlePtr, UInt16 procId);
00400
00422 Int ProcMgr_close (ProcMgr_Handle * handlePtr);
00423
00441 Void ProcMgr_getAttachParams (ProcMgr_Handle handle,
00442 ProcMgr_AttachParams * params);
00443
00489 Int ProcMgr_attach (ProcMgr_Handle handle, ProcMgr_AttachParams * params);
00490
00514 Int ProcMgr_detach (ProcMgr_Handle handle);
00515
00549 Int ProcMgr_load (ProcMgr_Handle handle,
00550 String imagePath,
00551 UInt32 argc,
00552 String * argv,
00553 Ptr params,
00554 UInt32 * fileId);
00555
00578 Int ProcMgr_unload (ProcMgr_Handle handle, UInt32 fileId);
00579
00598 Void ProcMgr_getStartParams (ProcMgr_Handle handle,
00599 ProcMgr_StartParams * params);
00600
00625 Int ProcMgr_start (ProcMgr_Handle handle, ProcMgr_StartParams * params);
00626
00644 Int ProcMgr_stop (ProcMgr_Handle handle);
00645
00658 ProcMgr_State ProcMgr_getState (ProcMgr_Handle handle);
00659
00691 Int ProcMgr_read (ProcMgr_Handle handle,
00692 UInt32 procAddr,
00693 UInt32 * numBytes,
00694 Ptr buffer);
00695
00724 Int ProcMgr_write (ProcMgr_Handle handle,
00725 UInt32 procAddr,
00726 UInt32 * numBytes,
00727 Ptr buffer);
00728
00747 Int ProcMgr_control (ProcMgr_Handle handle, Int32 cmd, Ptr arg);
00748
00772 Int ProcMgr_translateAddr (ProcMgr_Handle handle,
00773 Ptr * dstAddr,
00774 ProcMgr_AddrType dstAddrType,
00775 Ptr srcAddr,
00776 ProcMgr_AddrType srcAddrType);
00777
00794 Int ProcMgr_getSymbolAddress (ProcMgr_Handle handle,
00795 UInt32 fileId,
00796 String symbolName,
00797 UInt32 * symValue);
00798
00826 Int ProcMgr_map (ProcMgr_Handle handle,
00827 ProcMgr_MapMask mapMask,
00828 ProcMgr_AddrInfo * addrInfo,
00829 ProcMgr_AddrType srcAddrType);
00830
00863 Int ProcMgr_unmap (ProcMgr_Handle handle,
00864 ProcMgr_MapMask mapMask,
00865 ProcMgr_AddrInfo * addrInfo,
00866 ProcMgr_AddrType srcAddrType);
00867
00879 UInt32 ProcMgr_getMaxMemoryRegions(ProcMgr_Handle handle);
00880
00881
00894 Int ProcMgr_getProcInfo (ProcMgr_Handle handle,
00895 ProcMgr_ProcInfo * procInfo);
00896
00897
00913 Int ProcMgr_getSectionInfo (ProcMgr_Handle handle,
00914 UInt32 fileId,
00915 String sectionName,
00916 ProcMgr_SectionInfo * sectionInfo);
00917
00935 Int ProcMgr_getSectionData (ProcMgr_Handle handle,
00936 UInt32 fileId,
00937 ProcMgr_SectionInfo * sectionInfo,
00938 Ptr buffer);
00939
00940
00951 UInt32 ProcMgr_getLoadedFileId (ProcMgr_Handle handle);
00952
00953
00954 #if defined (__cplusplus)
00955 }
00956 #endif
00957
00958 #endif