00001 00043 #if !defined (MPCSDEFS_H) 00044 #define MPCSDEFS_H 00045 00046 00047 /* ----------------------------------- DSP/BIOS LINK Headers */ 00048 #include <dsplink.h> 00049 #include <archdefs.h> 00050 00051 #if defined (DDSP_PROFILE) 00052 #include <profile.h> 00053 #endif 00054 00055 00056 #if defined (__cplusplus) 00057 extern "C" { 00058 #endif /* defined (__cplusplus) */ 00059 00060 00067 #define MPCS_INVALID_ID (Uint32) -1l 00068 00076 #define MPCS_RESV_LOCKNAME "DSPLINK_MPCS_RESV" 00077 00085 #define MPCS_RESV_LOCKNAMELEN 17u 00086 00087 00097 typedef struct MPCS_Attrs_tag { 00098 Uint16 poolId ; 00099 } MPCS_Attrs ; 00100 00107 typedef struct MPCS_ShObj_tag MPCS_ShObj ; 00108 00115 typedef struct MPCS_Object_tag MPCS_Object ; 00116 00123 typedef Void * MPCS_Handle ; 00124 00125 00154 typedef struct MPCS_ProcObj_tag { 00155 Uint32 localLock ; 00156 Uint16 flag ; 00157 Uint16 freeObject ; 00158 Uint32 mpcsEntryAddr ; 00159 #if defined (DDSP_PROFILE) 00160 Uint16 conflicts ; 00161 Uint16 numCalls ; 00162 #endif 00163 #if defined (GPP_TSK_MODE) 00164 Uint32 localFlag ; 00165 #endif 00166 #if defined (GPP_SWI_MODE) 00167 Uint32 priority ; 00168 #endif 00169 } MPCS_ProcObj ; 00170 00194 struct MPCS_ShObj_tag { 00195 volatile MPCS_ProcObj gppMpcsObj ; 00196 ADD_PADDING (gppPadding, MPCSOBJ_PROC_PADDING) 00197 volatile MPCS_ProcObj dspMpcsObj ; 00198 ADD_PADDING (dspPadding, MPCSOBJ_PROC_PADDING) 00199 00200 volatile Uint16 turn ; 00201 ADD_PADDING (padding, MPCS_TURN_PADDING) 00202 } ; 00203 00223 typedef struct MPCS_Entry_tag { 00224 Uint16 ownerProcId ; 00225 Uint16 poolId ; 00226 Pvoid physAddress ; 00227 Char8 name [DSP_MAX_STRLEN] ; 00228 ADD_PADDING (padding, MPCS_ENTRY_PADDING) 00229 } MPCS_Entry ; 00230 00260 typedef struct MPCS_Ctrl_tag { 00261 Uint32 isInitialized ; 00262 Uint32 dspId ; 00263 Uint32 maxEntries ; 00264 Uint32 ipsId ; 00265 Uint32 ipsEventNo ; 00266 MPCS_Entry * dspAddrEntry ; 00267 ADD_PADDING (padding, MPCS_CTRL_PADDING) 00268 MPCS_ShObj lockObj ; 00269 } MPCS_Ctrl ; 00270 00288 typedef struct MPCS_MemInfo_tag { 00289 ProcessorId procId ; 00290 Uint32 physAddr ; 00291 Uint32 kernAddr ; 00292 Uint32 userAddr ; 00293 Uint32 size ; 00294 } MPCS_MemInfo ; 00295 00296 00297 #if defined (__cplusplus) 00298 } 00299 #endif /* defined (__cplusplus) */ 00300 00301 00302 #endif /* if !defined (MPCSDEFS_H) */