Semaphore
[Application Candies]

Thread synchronization support. More...

Collaboration diagram for Semaphore:

Data Structures

struct  SEM
 Semaphore. More...

Functions

void NutSemInit (SEM *sem, short value)
 Initialize an unnamed semaphore to value.
void NutSemWait (SEM *sem)
 Lock a semaphore.
int NutSemTryWait (SEM *sem)
 Attempt to lock a semaphore without blocking.
void NutSemPost (SEM *sem)
 Unlock a sempahore.
int NutSemDestroy (SEM *sem)
 Free resources allocated for a semaphore.

Detailed Description

Thread synchronization support.

In addition to posting and waiting for events, Threads can use the provided semaphore funxtions to handle a pool of shared resources.


Function Documentation

void NutSemInit ( SEM *  sem,
short  value 
)

Initialize an unnamed semaphore to value.

Definition at line 83 of file semaphore.c.

References NUTASSERT.

Referenced by CANBufferInit().

void NutSemWait ( SEM *  sem  ) 

Lock a semaphore.

If the semaphore value is currently zero, then the calling thread will not return from the call to sem_wait() the semaphore becomes available

Note:
: Should not be called from interrupt context

Definition at line 95 of file semaphore.c.

Referenced by CANBufferGetMutex(), CANBufferPutMutex(), and NutSemTryWait().

int NutSemTryWait ( SEM *  sem  ) 

Attempt to lock a semaphore without blocking.

Return zero, if successful, otherwise the sempahore is already locked

Note:
: Should not be called from interrupt context

Definition at line 125 of file semaphore.c.

References NUTASSERT, and NutSemWait().

void NutSemPost ( SEM *  sem  ) 

Unlock a sempahore.

Note:
: Should not be called from interrupt context

Definition at line 109 of file semaphore.c.

References NUTASSERT, and NutEventPost().

Referenced by CANBufferGetMutex(), and CANBufferPutMutex().

int NutSemDestroy ( SEM *  sem  ) 

Free resources allocated for a semaphore.

Return zero, if successful, otherwise there are threads blocked on the sempahore

Definition at line 141 of file semaphore.c.

References NUTASSERT, and SIGNALED.


© 2000-2010 by contributors - visit http://www.ethernut.de/