21 return malloc((
size_t)msize);
47static HANDLE Mutex[FF_VOLUMES + 1];
52static mtxid Mutex[FF_VOLUMES + 1];
56static OS_EVENT *Mutex[FF_VOLUMES + 1];
61static SemaphoreHandle_t Mutex[FF_VOLUMES + 1];
65static osMutexId Mutex[FF_VOLUMES + 1];
69static int Mutex[FF_VOLUMES + 1];
88 Mutex[vol] = CreateMutex(NULL, FALSE, NULL);
89 return (
int)(Mutex[vol] != INVALID_HANDLE_VALUE);
92 T_CMTX cmtx = {TA_TPRI,1};
94 Mutex[vol] = acre_mtx(&cmtx);
95 return (
int)(Mutex[vol] > 0);
100 Mutex[vol] = OSMutexCreate(0, &err);
101 return (
int)(err == OS_NO_ERR);
104 Mutex[vol] = xSemaphoreCreateMutex();
105 return (
int)(Mutex[vol] != NULL);
108 osMutexDef(cmsis_os_mutex);
110 Mutex[vol] = osMutexCreate(osMutex(cmsis_os_mutex));
111 return (
int)(Mutex[vol] != NULL);
120 Mutex[vol] = CreateSema(&sp);
121 return (
int)(Mutex[vol] >= 0);
133void ff_mutex_delete (
138 CloseHandle(Mutex[vol]);
146 OSMutexDel(Mutex[vol], OS_DEL_ALWAYS, &err);
149 vSemaphoreDelete(Mutex[vol]);
152 osMutexDelete(Mutex[vol]);
155 DeleteSema(Mutex[vol]);
173 return (
int)(WaitForSingleObject(Mutex[vol], FF_FS_TIMEOUT) == WAIT_OBJECT_0);
176 return (
int)(tloc_mtx(Mutex[vol], FF_FS_TIMEOUT) == E_OK);
181 OSMutexPend(Mutex[vol], FF_FS_TIMEOUT, &err));
182 return (
int)(err == OS_NO_ERR);
185 return (
int)(xSemaphoreTake(Mutex[vol], FF_FS_TIMEOUT) == pdTRUE);
188 return (
int)(osMutexWait(Mutex[vol], FF_FS_TIMEOUT) == osOK);
191 return (
int)(WaitSema(Mutex[vol]) == 0);
209 ReleaseMutex(Mutex[vol]);
215 OSMutexPost(Mutex[vol]);
218 xSemaphoreGive(Mutex[vol]);
221 osMutexRelease(Mutex[vol]);
224 SignalSema(Mutex[vol]);