*SS/18-Feb-2005
--Dr.Hook references removed, because these locks may also be
called from within drhook.c itself !!
--Also, there could be considerable & unjustified overhead
when using Dr.Hook in such a low level
SS/15-Dec-2005
--The size of lock-variables are now OMP_LOCK_KIND as of in OMP_LIB,
and OMP_LOCK_KIND is aliased to OML_LOCK_KIND
OMP_LOCK_KIND is usually 4 in 32-bit addressing mode
8 in 64-bit addressing mode
--M_OML_LOCK changed to M_EVENT and kept as 32-bit int
--OML_FUNCT changed to OML_TEST_EVENT
--M_LOCK initialized to -1
--M_EVENT initialized to 0
--Added intent(s)
--Support for omp_lib (but not always available)
--Locks can now also be set/unset OUTSIDE the parallel regions
--Added routine OML_TEST_LOCK (attempts to set lock, but if un*successful, does NOT block)
--Buffer-zone for M_LOCK; now a vector of 2 elements in case problems/inconsistencies with OMP_LOCK_KIND 4/8
*SS/22-Feb-2006
--Locking routines are doing nothing unless OMP_GET_MAX_THREADS() > 1
This is to avoid unacceptable deadlocks/timeouts with signal handlers when
the only thread receives signal while inside locked region
--Affected routines: OML_TEST_LOCK() --> always receives .TRUE.
OML_SET_LOCK() --> sets nothing
OML_UNSET_LOCK() --> unsets nothing
OML_INIT_LOCK() --> inits nothing
Nodes of different colours represent the following:
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.