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,
00240 ProcMgr_BootMode_NoLoad_NoPwr = 2u,
00244 ProcMgr_BootMode_NoBoot = 3u,
00248 ProcMgr_BootMode_EndValue = 4u
00250 } ProcMgr_BootMode ;
00251
00255 typedef enum {
00256 ProcMgr_AddrType_MasterKnlVirt = 0u,
00258 ProcMgr_AddrType_MasterUsrVirt = 1u,
00260 ProcMgr_AddrType_MasterPhys = 2u,
00262 ProcMgr_AddrType_SlaveVirt = 3u,
00264 ProcMgr_AddrType_SlavePhys = 4u,
00266 ProcMgr_AddrType_EndValue = 5u
00268 } ProcMgr_AddrType;
00269
00273 typedef UInt32 ProcMgr_MapMask;
00274
00278 #define ProcMgr_MASTERKNLVIRT (ProcMgr_MapMask)(1 << 0)
00279
00283 #define ProcMgr_MASTERUSRVIRT (ProcMgr_MapMask)(1 << 1)
00284
00288 #define ProcMgr_SLAVEVIRT (ProcMgr_MapMask)(1 << 2)
00289
00293 typedef struct ProcMgr_AttachParams_tag {
00294 ProcMgr_BootMode bootMode;
00296 Ptr bootParams;
00298 } ProcMgr_AttachParams ;
00299
00304 typedef struct ProcMgr_StartParams_tag {
00305 UInt32 reserved;
00307 } ProcMgr_StartParams ;
00308
00309
00314 typedef struct ProcMgr_AddrInfo_tag {
00315 UInt32 addr [ProcMgr_AddrType_EndValue];
00317 UInt32 size;
00319 Bool isCached;
00321 Bool isMapped;
00323 ProcMgr_MapMask mapMask;
00325 UInt16 refCount;
00328 } ProcMgr_AddrInfo;
00329
00333 typedef struct ProcMgr_MappedMemEntry {
00334 ProcMgr_AddrInfo info;
00336 ProcMgr_AddrType srcAddrType;
00338 ProcMgr_MapMask mapMask;
00340 Bool inUse;
00342 } ProcMgr_MappedMemEntry;
00343
00347 typedef struct ProcMgr_ProcInfo_tag {
00348 ProcMgr_BootMode bootMode;
00350 UInt16 maxMemoryRegions;
00352 UInt16 numMemEntries;
00354 ProcMgr_MappedMemEntry memEntries [0];
00356 } ProcMgr_ProcInfo;
00357
00358
00362 typedef struct ProcMgr_SectionInfo_tag {
00363 UInt32 physicalAddress;
00365 UInt32 virtualAddress;
00367 UInt16 sectId;
00369 UInt32 size;
00371 } ProcMgr_SectionInfo;
00372
00374
00375
00388 typedef Int (*ProcMgr_CallbackFxn) (UInt16 procId,
00389 ProcMgr_Handle handle,
00390 ProcMgr_State fromState,
00391 ProcMgr_State toState);
00392
00395
00396
00397
00398
00421 Int ProcMgr_open (ProcMgr_Handle * handlePtr, UInt16 procId);
00422
00444 Int ProcMgr_close (ProcMgr_Handle * handlePtr);
00445
00463 Void ProcMgr_getAttachParams (ProcMgr_Handle handle,
00464 ProcMgr_AttachParams * params);
00465
00511 Int ProcMgr_attach (ProcMgr_Handle handle, ProcMgr_AttachParams * params);
00512
00536 Int ProcMgr_detach (ProcMgr_Handle handle);
00537
00571 Int ProcMgr_load (ProcMgr_Handle handle,
00572 String imagePath,
00573 UInt32 argc,
00574 String * argv,
00575 Ptr params,
00576 UInt32 * fileId);
00577
00600 Int ProcMgr_unload (ProcMgr_Handle handle, UInt32 fileId);
00601
00620 Void ProcMgr_getStartParams (ProcMgr_Handle handle,
00621 ProcMgr_StartParams * params);
00622
00647 Int ProcMgr_start (ProcMgr_Handle handle, ProcMgr_StartParams * params);
00648
00666 Int ProcMgr_stop (ProcMgr_Handle handle);
00667
00680 ProcMgr_State ProcMgr_getState (ProcMgr_Handle handle);
00681
00713 Int ProcMgr_read (ProcMgr_Handle handle,
00714 UInt32 procAddr,
00715 UInt32 * numBytes,
00716 Ptr buffer);
00717
00746 Int ProcMgr_write (ProcMgr_Handle handle,
00747 UInt32 procAddr,
00748 UInt32 * numBytes,
00749 Ptr buffer);
00750
00769 Int ProcMgr_control (ProcMgr_Handle handle, Int32 cmd, Ptr arg);
00770
00794 Int ProcMgr_translateAddr (ProcMgr_Handle handle,
00795 Ptr * dstAddr,
00796 ProcMgr_AddrType dstAddrType,
00797 Ptr srcAddr,
00798 ProcMgr_AddrType srcAddrType);
00799
00816 Int ProcMgr_getSymbolAddress (ProcMgr_Handle handle,
00817 UInt32 fileId,
00818 String symbolName,
00819 UInt32 * symValue);
00820
00848 Int ProcMgr_map (ProcMgr_Handle handle,
00849 ProcMgr_MapMask mapMask,
00850 ProcMgr_AddrInfo * addrInfo,
00851 ProcMgr_AddrType srcAddrType);
00852
00885 Int ProcMgr_unmap (ProcMgr_Handle handle,
00886 ProcMgr_MapMask mapMask,
00887 ProcMgr_AddrInfo * addrInfo,
00888 ProcMgr_AddrType srcAddrType);
00889
00891
00913 Int ProcMgr_registerNotify (ProcMgr_Handle handle,
00914 ProcMgr_CallbackFxn fxn,
00915 Ptr args,
00916 ProcMgr_State state []);
00931 UInt32 ProcMgr_getMaxMemoryRegions(ProcMgr_Handle handle);
00932
00933
00946 Int ProcMgr_getProcInfo (ProcMgr_Handle handle,
00947 ProcMgr_ProcInfo * procInfo);
00948
00949
00965 Int ProcMgr_getSectionInfo (ProcMgr_Handle handle,
00966 UInt32 fileId,
00967 String sectionName,
00968 ProcMgr_SectionInfo * sectionInfo);
00969
00987 Int ProcMgr_getSectionData (ProcMgr_Handle handle,
00988 UInt32 fileId,
00989 ProcMgr_SectionInfo * sectionInfo,
00990 Ptr buffer);
00991
00992
01003 UInt32 ProcMgr_getLoadedFileId (ProcMgr_Handle handle);
01004
01005
01006 #if defined (__cplusplus)
01007 }
01008 #endif
01009
01010 #endif