non blocking queue

Fork of mbed-rtos by mbed official

rtos/Mutex.cpp

Committer:
emilmont
Date:
2012-11-23
Revision:
6:350b53afb889
Child:
8:88a1a9c26ae3

File content as of revision 6:350b53afb889:

#include "Mutex.h"

#include <string.h>
#include "error.h"

namespace rtos {

Mutex::Mutex() {
#ifdef CMSIS_OS_RTX
    memset(_mutex_data, 0, sizeof(_mutex_data));
    _osMutexDef.mutex = _mutex_data;
#endif
    _osMutexId = osMutexCreate(&_osMutexDef);
    if (_osMutexId == NULL) {
        error("Error initializing the mutex object\n");
    }
}

osStatus Mutex::lock(uint32_t millisec) {
    return osMutexWait(_osMutexId, millisec);
}

bool Mutex::trylock() {
    return (osMutexWait(_osMutexId, 0) == osOK);
}

osStatus Mutex::unlock() {
    return osMutexRelease(_osMutexId);
}

Mutex::~Mutex() {
    osMutexDelete(_osMutexId);
}

}