00001 00156 #ifndef LEGATO_MUTEX_INCLUDE_GUARD 00157 #define LEGATO_MUTEX_INCLUDE_GUARD 00158 00159 //-------------------------------------------------------------------------------------------------- 00163 //-------------------------------------------------------------------------------------------------- 00164 typedef struct le_mutex* le_mutex_Ref_t; 00165 00166 //-------------------------------------------------------------------------------------------------- 00174 //-------------------------------------------------------------------------------------------------- 00175 le_mutex_Ref_t le_mutex_CreateRecursive 00176 ( 00177 const char* nameStr 00178 ); 00179 00180 //-------------------------------------------------------------------------------------------------- 00188 //-------------------------------------------------------------------------------------------------- 00189 le_mutex_Ref_t le_mutex_CreateNonRecursive 00190 ( 00191 const char* nameStr 00192 ); 00193 00194 //-------------------------------------------------------------------------------------------------- 00202 //-------------------------------------------------------------------------------------------------- 00203 le_mutex_Ref_t le_mutex_CreateTraceableRecursive 00204 ( 00205 const char* nameStr 00206 ); 00207 00208 //-------------------------------------------------------------------------------------------------- 00216 //-------------------------------------------------------------------------------------------------- 00217 le_mutex_Ref_t le_mutex_CreateTraceableNonRecursive 00218 ( 00219 const char* nameStr 00220 ); 00221 00222 //-------------------------------------------------------------------------------------------------- 00228 //-------------------------------------------------------------------------------------------------- 00229 void le_mutex_Delete 00230 ( 00231 le_mutex_Ref_t mutexRef 00232 ); 00233 00234 //-------------------------------------------------------------------------------------------------- 00240 //-------------------------------------------------------------------------------------------------- 00241 void le_mutex_Lock 00242 ( 00243 le_mutex_Ref_t mutexRef 00244 ); 00245 00246 //-------------------------------------------------------------------------------------------------- 00256 //-------------------------------------------------------------------------------------------------- 00257 le_result_t le_mutex_TryLock 00258 ( 00259 le_mutex_Ref_t mutexRef 00260 ); 00261 00262 //-------------------------------------------------------------------------------------------------- 00268 //-------------------------------------------------------------------------------------------------- 00269 void le_mutex_Unlock 00270 ( 00271 le_mutex_Ref_t mutexRef 00272 ); 00273 00274 //-------------------------------------------------------------------------------------------------- 00294 //-------------------------------------------------------------------------------------------------- 00295 #define LE_MUTEX_DECLARE_REF(refName) \ 00296 static le_mutex_Ref_t refName; \ 00297 static inline void Lock(void) { le_mutex_Lock(refName); } \ 00298 static inline void Unlock(void) { le_mutex_Unlock(refName); } 00299 00300 #endif /* LEGATO_MUTEX_INCLUDE_GUARD */