| Tekkotsu Homepage | Demos | Overview | Downloads | Dev. Resources | 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. (does not depend on processor or OS support).
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | unlock () |
| releases one recursive lock-level from whoever has the current lock | |
| void | releaseAll () |
| completely unlocks, regardless of how many times a recursive lock has been obtained | |
| unsigned int | get_lock_level () const |
| returns the lockcount | |
| int | owner () const |
| 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 | |
Protected Member Functions | |
| virtual void | useResource (Resource::Data &) |
| marks the resource as in use | |
| virtual void | releaseResource (Resource::Data &) |
| releases the resource | |
| 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 | |
Friends | |
| class | MarkScope |
Classes | |
| struct | door_t |
| Holds per process shared info, one of these per process. More... | |
| bool MutexLock< num_doors >::do_try_lock | ( | unsigned int | index, | |
| bool | block | |||
| ) | [protected] |
Does the work of trying to get a lock.
Pass true for block if you want it to use FCFS blocking instead of just returning right away if another process has the lock
Definition at line 577 of file MutexLock.h.
Referenced by MutexLock< num_doors >::forget(), MutexLock< num_doors >::lock(), and MutexLock< num_doors >::try_lock().
| void MutexLock< num_doors >::lock | ( | int | id | ) |
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.
Definition at line 496 of file MutexLock.h.
Referenced by MotionManager::func_begin(), WorldStatePool::getCurrentWriteState(), MotionManager::InitAccess(), MotionManager::lock(), and WorldStatePool::WorldStatePool().
| bool MutexLock< num_doors >::try_lock | ( | int | id | ) |
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.
Definition at line 517 of file MutexLock.h.
Referenced by MotionManager::trylock().
|
Tekkotsu v3.0 |
Generated Fri May 11 20:08:26 2007 by Doxygen 1.4.7 |