Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

OS::Semaphore Class Reference

#include <Semaphore.h>

Inheritance diagram for OS::Semaphore:

Inheritance graph
[legend]
Collaboration diagram for OS::Semaphore:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Semaphore (void)
virtual ~Semaphore (void)
virtual void signal (void)
virtual void wait (void)

Static Public Member Functions

static SemaphoreforMutualExclusion (void)

Protected Attributes

sem_t handle

Constructor & Destructor Documentation

Semaphore::Semaphore void   ) 
 

Definition at line 33 of file Semaphore.cc.

References handle.

00034 {
00035     sem_init(&handle, 0, 0);
00036 }

Semaphore::~Semaphore void   )  [virtual]
 

Definition at line 38 of file Semaphore.cc.

References handle.

00039 {
00040     sem_destroy(&handle);
00041 }


Member Function Documentation

Semaphore * Semaphore::forMutualExclusion void   )  [static]
 

Definition at line 44 of file Semaphore.cc.

References signal().

Referenced by OS::SharedQueue::SharedQueue().

00045 {
00046     Semaphore *mutex = new Semaphore;
00047     mutex->signal();
00048     return mutex;
00049 }

void Semaphore::signal void   )  [virtual]
 

Definition at line 52 of file Semaphore.cc.

References handle.

Referenced by Tools::LogWriter::commit(), OS::Promise::exception(), forMutualExclusion(), OS::SharedQueue::next(), OS::SharedQueue::nextPut(), OS::SharedQueue::peek(), and OS::Promise::value().

00053 {
00054     sem_post(&handle);
00055 }

void Semaphore::wait void   )  [virtual]
 

Definition at line 57 of file Semaphore.cc.

References handle.

Referenced by Tools::LogWriter::close(), OS::SharedQueue::next(), OS::SharedQueue::nextPut(), OS::SharedQueue::peek(), OS::Promise::value(), and Tools::LogWriter::writeLog().

00058 {
00059     int retCode;
00060 
00061     do {
00062         retCode = sem_wait(&handle);
00063     } while (retCode == -1 && errno == EINTR);
00064     if (retCode == -1) {
00065         (new OSError(new String(sys_errlist[errno]), __PRETTY_FUNCTION__))
00066             ->raiseFrom(this);
00067     }
00068 }


Member Data Documentation

sem_t OS::Semaphore::handle [protected]
 

Definition at line 40 of file Semaphore.h.

Referenced by Semaphore(), signal(), wait(), and ~Semaphore().


The documentation for this class was generated from the following files:
Generated on Mon Nov 27 09:52:22 2006 for Smalltalk like C++ Class Library by  doxygen 1.4.2