Commit Graph

61 Commits

Author SHA1 Message Date
40f835afd2 Fix clippy issues 2025-01-18 11:57:47 +01:00
c9083c8bc1 Clarify feature selection 2023-09-09 12:02:52 +02:00
a8e8af6351 Make dependency tracking a compile time setting 2023-09-09 11:21:22 +02:00
068303d81d Show cycle backtraces when they happen 2023-09-09 11:21:22 +02:00
6be3e05cab Capture backtraces of allocations for debugging
Largely based on https://github.com/bertptrs/tracing-mutex/pull/28 with
only minor modifications.
2023-08-27 16:44:02 +02:00
909e934572 Reuse dependency orderings in graph
This avoids a potential panic when adding new nodes to the graph, as
there is no feasible way to overflow IDs any more.
2023-08-27 15:48:57 +02:00
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