we allocate the locks according to the following plans:
-1) transaction timer lists have each a semaphore in a semaphore set -2) retransmission timer lists have each a semaphore in a semaphore set -3) we allocate a semaphore set for hash_entries and try to use as many semaphores in it as OS allows; we partition the hash_entries by available semaphores which are shared in each partition -4) cells get always the same semaphore as its hash entry in which they live
1.5.6