#include <sbuild-lock.h>
Inheritance diagram for sbuild::lock:
Public Types | |
typedef runtime_error_custom< lock > | error |
Exception type. | |
enum | type { LOCK_SHARED = F_RDLCK, LOCK_EXCLUSIVE = F_WRLCK, LOCK_NONE = F_UNLCK } |
Lock type. More... | |
Public Member Functions | |
virtual void | set_lock (type lock_type, unsigned int timeout)=0 |
Acquire a lock. | |
virtual void | unset_lock ()=0 |
Release a lock. | |
Protected Member Functions | |
lock () | |
The constructor. | |
virtual | ~lock () |
The destructor. | |
void | set_alarm () |
Set the SIGALARM handler. | |
void | clear_alarm () |
Restore the state of SIGALRM prior to starting lock acquisition. | |
void | set_timer (struct itimerval const &timer) |
Set up an itimer for future expiry. | |
void | unset_timer () |
Remove any itimer currently set up. | |
Private Attributes | |
sigaction | saved_signals |
Signals saved during timeout. |
This class defines a simple interface for shared and exclusive locks.
|
Exception type.
|
|
Lock type.
|
|
The constructor.
|
|
The destructor.
|
|
Restore the state of SIGALRM prior to starting lock acquisition.
|
|
Set the SIGALARM handler. An error will be thrown on failure. |
|
Acquire a lock.
|
|
Set up an itimer for future expiry. This is used to interrupt system calls. This will set a handler for SIGALRM as a side effect (using set_alarm). An error will be thrown on failure.
|
|
Release a lock. This is equivalent to set_lock with a lock_type of LOCK_NONE and a timeout of 0. Implemented in sbuild::file_lock, and sbuild::device_lock. |
|
Remove any itimer currently set up. This will clear any SIGALRM handler (using clear_alarm). An error will be thrown on failure. |
|
Signals saved during timeout.
|