Guarded interface to Semaphore objects used by user applications.
More...
#include <syscall/guarded_semaphore.h>
|
| GuardedSemaphore (unsigned c) |
| The constructor passes the parameters to the base-class constructor.
|
|
void | p () |
| Wait for access to the critical area.
|
|
void | v () |
| Leave the critical area.
|
|
|
| GuardedSemaphore (const GuardedSemaphore &)=delete |
|
GuardedSemaphore & | operator= (const GuardedSemaphore &)=delete |
|
| Semaphore (unsigned c=0) |
| Constructor; initialized the counter with provided value c
|
|
void | p () |
| Wait for access to the critical area.
|
|
void | v () |
| Leave the critical area.
|
|
| Waitingroom () |
| Constructor.
|
|
virtual | ~Waitingroom () |
| Destructor.
|
|
virtual void | remove (Thread *customer) |
| Remove a given thread prematurely from the Waitingroom.
|
|
| Queue () |
| Default constructor; initialized the queue as empty.
|
|
void | enqueue (T *item) |
| Enqueues the provided item at the end of the queue.
|
|
T * | dequeue () |
| Removes the first element in the queue and returns it.
|
|
Iterator | begin () |
|
Iterator | end () |
|
T * | remove (T *item, bool(*cmp)(T *, T *)=[](T *a, T *b) {return a==b;}) |
| Removes and returns a single element from the queue.
|
|
void | insertFirst (T *item) |
| Adds item to the beginning of the queue.
|
|
void | insertAfter (T *old_item, T *new_item) |
| Inserts the element new_item directly after old_item .
|
|
T * | first () |
| Returns the first element in the queue without removing it.
|
|
T * | next (T *o) |
| Returns the next element in the queue for a given element.
|
|
Guarded interface to Semaphore objects used by user applications.
Implements the system call interface for class Semaphore. All methods provided by this class are wrappers for the respective method from the base class, which provide additional synchronization by using the class Guarded.
◆ GuardedSemaphore() [1/2]
◆ GuardedSemaphore() [2/2]
GuardedSemaphore::GuardedSemaphore |
( |
unsigned |
c | ) |
|
|
inlineexplicit |
The constructor passes the parameters to the base-class constructor.
◆ operator=()
◆ p()
void GuardedSemaphore::p |
( |
| ) |
|
|
inline |
Wait for access to the critical area.
Enter/Wait operation: If the counter is greater than 0, then it is decremented by one. Otherwise the calling thread will be enqueued into the Waitingroom and marked as blocked.
- Note
- This method is equal to the correspondent method in base class Semaphore, with the only difference that the call will be protected by a Guarded object.
◆ v()
void GuardedSemaphore::v |
( |
| ) |
|
|
inline |
Leave the critical area.
Leave operation: If there are threads in the Waitingroom, wake the first one; otherwise increment the counter by one.
- Note
- This method is equal to the correspondent method in base class Semaphore, with the only difference that the call will be protected by a Guarded object.
The documentation for this class was generated from the following file: