- Move the 'clk' spinlock below other spin locks since KTR trace events   may need the clock lock for nanotime(). - Add KTR trace events for lock list manipulations and other witness   operations. - Use a temporary variable instead of setting the lock list head directly   and then setting up the links to add a new lock list entry to the lock   list.  This small race could result in witness "forgetting" about all   the locks held by this process temporarily during an interrupt. - Close a more fatal race condition when removing a lock from a list.   Removing a lock from the list entails both decrementing the count of   items in this bucket as well as shuffling items in the current bucket up   a notch to replace the gap left by the removed item.  Wrap these   operations in a critical section.
- Move the 'clk' spinlock below other spin locks since KTR trace events
  may need the clock lock for nanotime().
- Add KTR trace events for lock list manipulations and other witness
  operations.
- Use a temporary variable instead of setting the lock list head directly
  and then setting up the links to add a new lock list entry to the lock
  list.  This small race could result in witness "forgetting" about all
  the locks held by this process temporarily during an interrupt.
- Close a more fatal race condition when removing a lock from a list.
  Removing a lock from the list entails both decrementing the count of
  items in this bucket as well as shuffling items in the current bucket up
  a notch to replace the gap left by the removed item.  Wrap these
  operations in a critical section.

jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase