Recursive Mutex
[Application Candies]

Collaboration diagram for Recursive Mutex:


Detailed Description

Thread synchronization support.

In addition to posting and waiting for events, Threads can use the provided recursive mutex funxtions to assert mutual access to shared data structures.

A recursive mutex is a mutex that can be locked several times by the thread that already owns the mutex.


Data Structures

struct  _MUTEX
 Recursive mutex. More...
struct  _MUTEX
 Recursive mutex. More...

Typedefs

typedef _MUTEX MUTEX
 Recursive mutex type.

Functions

void NutMutexInit (MUTEX *mutex)
 Create a mutex.
void NutMutexLock (MUTEX *mutex)
 Lock a mutex.
int NutMutexUnlock (MUTEX *mutex)
 Unlock a mutex.
int NutMutexTrylock (MUTEX *mutex)
 Attempt to lock a mutex without blocking.
int NutMutexDestroy (MUTEX *mutex)
 Free resources allocated for a mutex.


Typedef Documentation

typedef struct _MUTEX MUTEX

Recursive mutex type.

Definition at line 73 of file mutex.h.


Function Documentation

void NutMutexInit ( MUTEX mutex  ) 

Create a mutex.

The type for the mutex is recursive

Definition at line 76 of file mutex.c.

References _MUTEX::count, _MUTEX::qhp, and _MUTEX::thread.

void NutMutexLock ( MUTEX mutex  ) 

Lock a mutex.

If the mutex is already locked by another thread, the thread will block until the mutex becomes available

Note:
: Should not be called from interrupt context

Definition at line 91 of file mutex.c.

References _MUTEX::count, NUT_WAIT_INFINITE, NutEventWaitNext(), _MUTEX::qhp, runningThread, and _MUTEX::thread.

Referenced by NutMutexTrylock().

int NutMutexUnlock ( MUTEX mutex  ) 

Unlock a mutex.

Return zero, if successful, otherwise the current thread does not hold a lock on mutex.

Note:
: Should not be called from interrupt context

Definition at line 123 of file mutex.c.

References _MUTEX::count, NutEventPost(), _MUTEX::qhp, runningThread, and _MUTEX::thread.

int NutMutexTrylock ( MUTEX mutex  ) 

Attempt to lock a mutex without blocking.

Return zero, if successful, otherwise the mutex is already locked by another thread

Note:
: Should not be called from interrupt context

Definition at line 108 of file mutex.c.

References _MUTEX::count, NutMutexLock(), runningThread, and _MUTEX::thread.

int NutMutexDestroy ( MUTEX mutex  ) 

Free resources allocated for a mutex.

Return zero, if successful, otherwise the mutex is locked by another thread

Definition at line 139 of file mutex.c.

References _MUTEX::count, runningThread, and _MUTEX::thread.


© 2000-2007 by egnite Software GmbH - visit http://www.ethernut.de/