Donation from David Carlier
[ikiwiki.git] / docs / developer / Locking_and_Synchronization / index.mdwn
index f7a842b..42feab3 100644 (file)
@@ -41,6 +41,7 @@
 * 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
 
 ----
 
@@ -60,9 +61,7 @@
 
 ## MPLock
 ### Internals
-* internally uses atomic_cmpset
-* logs when the mplock is contended to KTR
-* clogs performance inmensely
+* API is a wrapper for mp token
 ### Usage
 * should be avoided at all cost
 * must be held as little as possible
 
 ## Condvars
 ### Internals
-* XXX: current implementation is incorrect, need to use lksleep!!
-* XXX: currently not yet in the main repository
 * uses spinlocks internally on the condvar
 ### Usage
 * 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