00420d6807
Implement wrapper for OnceLock
2023-08-26 00:58:54 +02:00
29c9daf53e
Replace dependency on lazy-static with OnceLock
2023-08-25 08:44:45 +02:00
2d2e03eede
Simplify lazy mutex ID drop
2022-08-29 08:26:12 +02:00
e9b577a0f5
Make stdsync wrappers const-constructible
2022-08-27 10:33:15 +02:00
56b0604448
Restructure parking_lot wrappers
2022-08-27 10:06:31 +02:00
6e5516eaa7
Restructure std::sync wrappers
2022-08-27 10:01:51 +02:00
33cb6014a3
Ensure BorrowedMutex is !Send
2022-06-23 21:54:25 +02:00
bors[bot]
c08addff7d
Merge #17
...
17: Fix typos r=bertptrs a=quisar
Co-authored-by: Benjamin Lerman <qsr@chromium.org >
2022-05-23 06:33:21 +00:00
312eaa8649
Add a wrapper for std::sync::Condvar
...
This wrapper does not do any tracing itself but supports the use of a
tracing mutex guard instead of an `std::sync` one.
2022-05-17 21:45:25 +02:00
Benjamin Lerman
8e3278fdd2
Fix typos
2022-05-10 10:30:20 +02:00
d1417e0b0c
Tag module docs with their required features
2022-05-07 17:52:32 +02:00
ea8e0208a0
Explicitly test for disallowed self-cycles
2022-05-07 16:43:31 +02:00
77676ea04d
Fix formatting
2022-05-07 16:43:31 +02:00
Benjamin Lerman
743cc83669
Add TracingRwLockUpgradableReadGuard wrapper for parking_lot
2022-05-03 10:16:27 +02:00
Benjamin Lerman
b78af9150d
Fix a number of issues in the lockapi wrappers.
2022-05-02 08:20:23 +02:00
Benjamin Lerman
b5a5ca16c3
Do not allow recursive locks.
2022-05-02 08:11:37 +02:00
Benjamin Lerman
6073c6c78d
Fix Target for Deref of stdsync::TracingMutexGuard
2022-05-01 16:53:26 +02:00
38b3b226cc
Move to edition 2021 altogether
2022-05-01 12:03:50 +02:00
3b9b908460
Correctly mark mutex reference as unused
2022-05-01 11:50:50 +02:00
ef421e20eb
Deal with IntoIter deprecation
2022-05-01 11:50:37 +02:00
680e335ccf
Document new modules
2021-07-10 17:25:42 +02:00
17761af5a8
Add type aliases for mapped mutex guards
2021-07-10 13:05:41 +02:00
4c70d999d6
Create type aliases for parking_lot::RwLock
2021-07-10 12:17:35 +02:00
618a11f940
Implement a wrapper for parking_lot::Once
2021-05-27 22:19:57 +02:00
77cd603363
Implement minimal mutexes for parking_lot.
2021-05-27 22:00:37 +02:00
73b4c8b1af
Minimal parking_lot support
2021-05-27 21:16:24 +02:00
b21a63e74b
Implement RwLock-based traits for lockapi worker.
2021-05-27 21:16:24 +02:00
6a3cb83d01
Implement Mutex behaviour for lock_api
2021-05-27 21:16:24 +02:00
e2db0eaca8
Fix a graph invariant violation on cycle detection
2021-05-27 20:31:00 +02:00
158e5353bb
Add missing guard type aliases
2021-05-24 20:28:49 +02:00
ebb8132cf8
Add a fuzz-test for the mutex ID's graph
2021-05-24 15:10:41 +02:00
d242ac5bc2
Use interior mutability for updating graph order
2021-05-24 14:49:48 +02:00
39b493a871
Merge hash maps in graph structures
...
This saves quite a few hash-map lookups which improves performance by
about 25%.
2021-05-24 14:49:48 +02:00
cca3cf7827
Fix unintentional exponential order ids
2021-05-24 14:49:48 +02:00
6ef9cb12f8
Implement basic fuzz testing for the digraph impl
2021-05-24 14:49:48 +02:00
50e99fd07a
Rework dependency-tracking to be poison-free
...
Now new dependency edges that introduce cycles are simply rejected, not
affecting the overall graph. This simplifies the visible API and also
removes the need to restore the graph.
2021-05-16 14:16:51 +02:00
440693ab1e
Fix unfortunate typo
2021-05-13 17:44:45 +02:00
75df988d8a
Document safety of unsafe Sync impl
2021-05-13 17:08:57 +02:00
dc299f2f9a
Reimplement LazyMutexId using MaybeUninit
...
This shrinks the type by quite a bit and we don't lose state tracking as
the interal std::sync::Once already keeps track of that.
Also add a test for the new behaviour as this is a lot of unsafe code.
2021-05-13 16:55:41 +02:00
19973b3919
Implement a tracing wrapper for std::sync::Once.
2021-05-13 15:24:41 +02:00
9e7f2d6a61
Missing Default implementation for TracingRwLock.
2021-05-08 17:10:56 +02:00
514a84f3b5
Minimal documentation for the complete API
2021-05-08 14:58:02 +02:00
eb7abc70ea
Derive Default more rather than implement it
2021-05-08 14:28:51 +02:00
050ee27af6
Refactor MutexID to be self tracking
...
This avoids the need to implement Drop on every wrapped mutex, and
removes the need for unsafe code in this crate.
2021-05-02 11:55:04 +02:00
24c8453496
Document API and design
2021-04-21 20:21:46 +02:00
d3e146214f
Replage edge lists with edge sets
2021-04-11 10:38:55 +02:00
c196589cfd
Implement fast dynamic topsort algorithm
2021-03-27 17:20:37 +01:00
5638ebffd8
Simplify lock guard tracking
...
Instead of implementing the tracking everywhere, create a RAII-guard
that will track the state as it is held and dropped.
2021-03-20 20:43:05 +01:00
9b56deac26
Simplify code structure
2021-03-19 21:28:14 +01:00
5f2e0e99a8
Use dedicated type for Mutex IDs
...
This should prevent tiny mistakes in handling the value.
2021-03-19 21:18:50 +01:00