| 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.1 |
Generated Tue Nov 23 16:37:49 2004 by Doxygen 1.3.9.1 |