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
00373
00374
00387 typedef Int (*ProcMgr_CallbackFxn) (UInt16 procId,
00388 ProcMgr_Handle handle,
00389 ProcMgr_State fromState,
00390 ProcMgr_State toState);
00391
00394
00395
00396
00397
00420 Int ProcMgr_open (ProcMgr_Handle * handlePtr, UInt16 procId);
00421
00443 Int ProcMgr_close (ProcMgr_Handle * handlePtr);
00444
00462 Void ProcMgr_getAttachParams (ProcMgr_Handle handle,
00463 ProcMgr_AttachParams * params);
00464
00510 Int ProcMgr_attach (ProcMgr_Handle handle, ProcMgr_AttachParams * params);
00511
00535 Int ProcMgr_detach (ProcMgr_Handle handle);
00536
00570 Int ProcMgr_load (ProcMgr_Handle handle,
00571 String imagePath,
00572 UInt32 argc,
00573 String * argv,
00574 Ptr params,
00575 UInt32 * fileId);
00576
00599 Int ProcMgr_unload (ProcMgr_Handle handle, UInt32 fileId);
00600
00619 Void ProcMgr_getStartParams (ProcMgr_Handle handle,
00620 ProcMgr_StartParams * params);
00621
00646 Int ProcMgr_start (ProcMgr_Handle handle, ProcMgr_StartParams * params);
00647
00665 Int ProcMgr_stop (ProcMgr_Handle handle);
00666
00679 ProcMgr_State ProcMgr_getState (ProcMgr_Handle handle);
00680
00712 Int ProcMgr_read (ProcMgr_Handle handle,
00713 UInt32 procAddr,
00714 UInt32 * numBytes,
00715 Ptr buffer);
00716
00745 Int ProcMgr_write (ProcMgr_Handle handle,
00746 UInt32 procAddr,
00747 UInt32 * numBytes,
00748 Ptr buffer);
00749
00768 Int ProcMgr_control (ProcMgr_Handle handle, Int32 cmd, Ptr arg);
00769
00793 Int ProcMgr_translateAddr (ProcMgr_Handle handle,
00794 Ptr * dstAddr,
00795 ProcMgr_AddrType dstAddrType,
00796 Ptr srcAddr,
00797 ProcMgr_AddrType srcAddrType);
00798
00815 Int ProcMgr_getSymbolAddress (ProcMgr_Handle handle,
00816 UInt32 fileId,
00817 String symbolName,
00818 UInt32 * symValue);
00819
00847 Int ProcMgr_map (ProcMgr_Handle handle,
00848 ProcMgr_MapMask mapMask,
00849 ProcMgr_AddrInfo * addrInfo,
00850 ProcMgr_AddrType srcAddrType);
00851
00884 Int ProcMgr_unmap (ProcMgr_Handle handle,
00885 ProcMgr_MapMask mapMask,
00886 ProcMgr_AddrInfo * addrInfo,
00887 ProcMgr_AddrType srcAddrType);
00888
00890
00912 Int ProcMgr_registerNotify (ProcMgr_Handle handle,
00913 ProcMgr_CallbackFxn fxn,
00914 Ptr args,
00915 ProcMgr_State state []);
00930 UInt32 ProcMgr_getMaxMemoryRegions(ProcMgr_Handle handle);
00931
00932
00945 Int ProcMgr_getProcInfo (ProcMgr_Handle handle,
00946 ProcMgr_ProcInfo * procInfo);
00947
00948
00964 Int ProcMgr_getSectionInfo (ProcMgr_Handle handle,
00965 UInt32 fileId,
00966 String sectionName,
00967 ProcMgr_SectionInfo * sectionInfo);
00968
00986 Int ProcMgr_getSectionData (ProcMgr_Handle handle,
00987 UInt32 fileId,
00988 ProcMgr_SectionInfo * sectionInfo,
00989 Ptr buffer);
00990
00991
01002 UInt32 ProcMgr_getLoadedFileId (ProcMgr_Handle handle);
01003
01004
01005 #if defined (__cplusplus)
01006 }
01007 #endif
01008
01009 #endif