vpr::SignalSet Class Reference

Wrapper class for a signal set. More...

#include <vpr/Thread/Signal.h>

List of all members.

Public Member Functions

 SignalSet (const sigset_t *const sigset)
 Initializes mSigSet with sigset.
 SignalSet (bool fill=false)
 If fill is false then initialize the mSigSet to be empty.
vpr::ReturnStatus emptySet ()
 Creates a set that includes no signals defined by the system.
vpr::ReturnStatus fillSet ()
 Creates a set that includes all signals defined by the system.
vpr::ReturnStatus addSignal (const int sigNum)
 Adds the individual signal specified by sigNum to the set.
vpr::ReturnStatus removeSignal (const int sigNum)
 Deletes the individual signal specified by sigNum from the set.
bool isMember (const int sigNum) const
 Checks whether the signal specified by sigNum is in the set.
const sigset_t * getMask () const
 Returns a constant pointer to the underlying sigset_t variable.


Detailed Description

Wrapper class for a signal set.

A signal set contains the set of system signals to be masked when used with a vpr::SignalAction.

Definition at line 98 of file Signal.h.


Constructor & Destructor Documentation

vpr::SignalSet::SignalSet ( const sigset_t *const   sigset  )  [inline]

Initializes mSigSet with sigset.

If sigset == 0 then fill the set.

Parameters:
sigset The signal set used for initializing this object.

Definition at line 107 of file Signal.h.

00108    {
00109       if ( sigset == 0 )
00110       {
00111          fillSet();
00112       }
00113       else
00114       {
00115          mSigSet = *sigset;
00116       }
00117    }

vpr::SignalSet::SignalSet ( bool  fill = false  )  [inline]

If fill is false then initialize the mSigSet to be empty.

Otherwise, mSigSet is initialized to be full.

Parameters:
fill A boolean flag stating whether to fill this object's signal set or make it empty.

Definition at line 126 of file Signal.h.

00127    {
00128       if ( fill )
00129       {
00130          fillSet();
00131       }
00132       else
00133       {
00134          emptySet();
00135       }
00136    }


Member Function Documentation

vpr::ReturnStatus vpr::SignalSet::emptySet (  ) 

Creates a set that includes no signals defined by the system.

Returns:
vpr::ReturnStatus::Succeed is returned if this object's signal set is emptied. vpr::ReturnStatus::Fail is returned otherwise.

Definition at line 59 of file Signal.cpp.

References vpr::ReturnStatus::Fail, and vpr::ReturnStatus::setCode().

00060 {
00061    vpr::ReturnStatus status;
00062 
00063 #ifdef HAVE_SIGEMPTYSET
00064    if ( sigemptyset(&mSigSet) != 0 )
00065    {
00066       status.setCode(vpr::ReturnStatus::Fail);
00067    }
00068 #else
00069    mSigSet = 0;
00070 #endif
00071 
00072    return status;
00073 }

vpr::ReturnStatus vpr::SignalSet::fillSet (  ) 

Creates a set that includes all signals defined by the system.

Returns:
vpr::ReturnStatus::Succeed is returned if this object's signal set is filled. vpr::ReturnStatus::Fail is returned otherwise.

Definition at line 75 of file Signal.cpp.

References vpr::ReturnStatus::Fail, and vpr::ReturnStatus::setCode().

00076 {
00077    vpr::ReturnStatus status;
00078 
00079 #ifdef HAVE_SIGFILLSET
00080    if ( sigfillset(&mSigSet) != 0 ) {
00081       status.setCode(vpr::ReturnStatus::Fail);
00082    }
00083 #else
00084    mSigSet = ~(sigset_t) 0;
00085 #endif
00086 
00087    return status;
00088 }

vpr::ReturnStatus vpr::SignalSet::addSignal ( const int  sigNum  ) 

Adds the individual signal specified by sigNum to the set.

Parameters:
sigNum The signal number to be added.
Returns:
vpr::ReturnStatus::Succeed is returned if the given signal is added to this object's signal set. vpr::ReturnStatus::Fail is returned otherwise.

Definition at line 90 of file Signal.cpp.

References vpr::ReturnStatus::Fail, vpr::ReturnStatus::setCode(), and vprASSERT.

00091 {
00092    vpr::ReturnStatus status;
00093 
00094    vprASSERT(sigNum >= 1 && "Invalid signal number");
00095 
00096 #ifdef HAVE_SIGADDSET
00097    if ( sigaddset(&mSigSet, sigNum) != 0 )
00098    {
00099       status.setCode(vpr::ReturnStatus::Fail);
00100    }
00101 #else
00102    mSigSet |= (1 << (sigNum - 1));
00103 #endif
00104 
00105    return status;
00106 }

vpr::ReturnStatus vpr::SignalSet::removeSignal ( const int  sigNum  ) 

Deletes the individual signal specified by sigNum from the set.

Parameters:
sigNum The signal number to be removed.
Returns:
vpr::ReturnStatus::Succeed is returned if the given signal is removed from this object's signal set. vpr::ReturnStatus::Fail is returned otherwise.

Definition at line 108 of file Signal.cpp.

References vpr::ReturnStatus::Fail, vpr::ReturnStatus::setCode(), and vprASSERT.

00109 {
00110    vpr::ReturnStatus status;
00111 
00112    vprASSERT(sigNum >= 1 && "Invalid signal number");
00113 
00114 #ifdef HAVE_SIGDELSET
00115    if ( sigdelset(&mSigSet, sigNum) != 0 )
00116    {
00117       status.setCode(vpr::ReturnStatus::Fail);
00118    }
00119 #else
00120    mSigSet &= ~(1 << (sigNum - 1)) ;
00121 #endif
00122 
00123    return status;
00124 }

bool vpr::SignalSet::isMember ( const int  sigNum  )  const

Checks whether the signal specified by sigNum is in the set.

Parameters:
sigNum The signal number being checked.
Returns:
true is returned if sigNum is in this object's set.

false is returned otherwise.

Definition at line 126 of file Signal.cpp.

References vprASSERT.

00127 {
00128    bool is_member;
00129 
00130    vprASSERT(sigNum >= 1 && "Invalid signal number");
00131 
00132 #ifdef HAVE_SIGISMEMBER
00133    is_member = (sigismember(&mSigSet, sigNum) == 1);
00134 #else
00135    is_member = ((mSigSet & (1 << (sigNum - 1))) != 0);
00136 #endif
00137 
00138    return is_member;
00139 }

const sigset_t* vpr::SignalSet::getMask (  )  const [inline]

Returns a constant pointer to the underlying sigset_t variable.

Returns:
A constant pointer to this object's sigset_t variable.

Definition at line 191 of file Signal.h.

Referenced by vpr::SignalAction::SignalAction().

00192    {
00193       return &mSigSet;
00194    }


The documentation for this class was generated from the following files:
Generated on Thu Jan 4 10:55:54 2007 for VR Juggler Portable Runtime by  doxygen 1.5.1