Homepage | Demos | Overview | Downloads | Tutorials | Reference | Credits |
MutexLock< num_doors > Class Template Reference#include <MutexLock.h>
Inheritance diagram for MutexLock< num_doors >: ![]() Detailed Descriptiontemplate<unsigned int num_doors>
A software only mutual exclusion lock.
|
Public Member Functions | |
MutexLock () | |
constructor, just calls the init() function. | |
void | lock (int id) |
blocks (by busy looping on do_try_lock()) until a lock is achieved | |
bool | try_lock (int id) |
attempts to get a lock, returns true if it succeeds | |
void | release () |
releases one recursive lock-level from whoever has the current lock | |
void | unlock () |
completely unlocks, regardless of how many times a recursive lock has been obtained | |
unsigned int | get_lock_level () const |
returns the lockcount | |
int | owner () |
returns the current owner's id | |
void | forget (int id) |
allows you to reset one of the possible owners, so another process can take its place. This is not tested | |
Static Public Attributes | |
const unsigned int | NO_OWNER = -1U |
marks as unlocked | |
Protected Member Functions | |
bool | do_try_lock (unsigned int index, bool block) |
Does the work of trying to get a lock. | |
unsigned int | lookup (int id) |
returns the internal index mapping to the id number supplied by the process | |
void | init () |
Doesn't do anything if you have the MUTEX_LOCK_ET_USE_SPINCOUNT undef'ed. Used to do a memset, but that was causing problems.... | |
void | spin () |
If you find a way to sleep for a few microseconds instead of busy waiting, put it here. | |
Protected Attributes | |
door_t | doors [num_doors] |
holds all the doors | |
unsigned int | doors_used |
counts the number of doors used | |
unsigned int | owner_index |
holds the door index of the current lock owner | |
unsigned int | lockcount |
the depth of the lock, 0 when unlocked |
|
constructor, just calls the init() function.
Definition at line 45 of file MutexLock.h. |
|
Does the work of trying to get a lock.
Pass Definition at line 170 of file MutexLock.h. Referenced by MutexLock< num_doors >::forget(), MutexLock< num_doors >::lock(), and MutexLock< num_doors >::try_lock(). |
|
allows you to reset one of the possible owners, so another process can take its place. This is not tested
Definition at line 249 of file MutexLock.h. |
|
returns the lockcount
Definition at line 71 of file MutexLock.h. |
|
Doesn't do anything if you have the MUTEX_LOCK_ET_USE_SPINCOUNT undef'ed. Used to do a memset, but that was causing problems....
Definition at line 98 of file MutexLock.h. |
|
blocks (by busy looping on do_try_lock()) until a lock is achieved You should pass some process-specific ID number as the input - just make sure no other process will be using the same value. This is not a recursive lock - repeated locks still only require one release to undo them.
Definition at line 124 of file MutexLock.h. Referenced by MotionManager::InitAccess(). |
|
returns the internal index mapping to the id number supplied by the process
Definition at line 230 of file MutexLock.h. Referenced by MutexLock< num_doors >::forget(), MutexLock< num_doors >::lock(), and MutexLock< num_doors >::try_lock(). |
|
returns the current owner's id
Definition at line 74 of file MutexLock.h. Referenced by MutexLock< num_doors >::lock(), and MutexLock< num_doors >::try_lock(). |
|
releases one recursive lock-level from whoever has the current lock
Definition at line 150 of file MutexLock.h. Referenced by MutexLock< num_doors >::forget(), and MotionManager::InitAccess(). |
|
If you find a way to sleep for a few microseconds instead of busy waiting, put it here.
Definition at line 100 of file MutexLock.h. Referenced by MutexLock< num_doors >::do_try_lock(), and MutexLock< num_doors >::lock(). |
|
attempts to get a lock, returns true if it succeeds You should pass some process-specific ID number as the input - just make sure no other process will be using the same value. This is not a recursive lock - repeated locks still only require one release to undo them. Definition at line 134 of file MutexLock.h. |
|
completely unlocks, regardless of how many times a recursive lock has been obtained
Definition at line 68 of file MutexLock.h. |
|
holds all the doors
Definition at line 115 of file MutexLock.h. Referenced by MutexLock< num_doors >::do_try_lock(), MutexLock< num_doors >::forget(), MutexLock< num_doors >::lookup(), and MutexLock< num_doors >::release(). |
|
counts the number of doors used
Definition at line 116 of file MutexLock.h. |
|
the depth of the lock, 0 when unlocked
Definition at line 118 of file MutexLock.h. Referenced by MutexLock< num_doors >::lock(), MutexLock< num_doors >::release(), and MutexLock< num_doors >::try_lock(). |
|
marks as unlocked
Definition at line 42 of file MutexLock.h. |
|
holds the door index of the current lock owner
Definition at line 117 of file MutexLock.h. Referenced by MutexLock< num_doors >::do_try_lock(), and MutexLock< num_doors >::release(). |
Tekkotsu v2.2 |
Generated Tue Oct 19 14:20:20 2004 by Doxygen 1.3.9.1 |