* can be acquired recursively, if the thread is the same and LK_CANRECURSE is specified
* can sleep while holding the lock.
* used when there is a requirement or possibility of blocking/sleep/recursion/...
+* used for portability of freebsd code that uses lockmgr locks
----
* can interlock sleep when given a lockmgr lock to avoid missing changes to it, or just regular tsleep
* used to wait for conditions to happen (threads doing this are waiters)
* can wakeup all waiters or just one, effectively notifying that a change has occured
-
+### Notes
+* could (should?) be torn out and replaced with other locking primitives and tsleep/wakeup interlocks
+
+----
+
+## Serializers
+### Usage
+* serialize access to various hardware and other subsystems
+### Notes
+* could (should?) be torn out and carefully replaced with mtx locks