Skip to content

Commit 17952d6

Browse files
committed
Fix code review/CI issues
1 parent bc07d43 commit 17952d6

File tree

2 files changed

+36
-25
lines changed

2 files changed

+36
-25
lines changed

benches/bench.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::iter;
12
use std::pin::Pin;
23

34
use criterion::{criterion_group, criterion_main, Criterion};
@@ -8,10 +9,9 @@ const COUNT: usize = 8000;
89
fn bench_events(c: &mut Criterion) {
910
c.bench_function("notify_and_wait", |b| {
1011
let ev = Event::new();
11-
let mut handles = Vec::with_capacity(COUNT);
12-
for _ in 0..COUNT {
13-
handles.push(EventListener::new(&ev));
14-
}
12+
let mut handles = iter::repeat_with(|| EventListener::new(&ev))
13+
.take(COUNT)
14+
.collect::<Vec<_>>();
1515

1616
b.iter(|| {
1717
for handle in &mut handles {

src/no_std.rs

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ impl crate::Inner {
8282
// Slow path removal.
8383
// This is why intrusive lists don't work on no_std.
8484
let node = Node::RemoveListener {
85-
key,
85+
listener: key,
8686
propagate: propogate,
8787
};
8888

@@ -178,10 +178,10 @@ impl crate::Inner {
178178

179179
pub(crate) struct List {
180180
/// The inner list.
181-
pub(crate) inner: Mutex<ListenerSlab>,
181+
inner: Mutex<ListenerSlab>,
182182

183183
/// The queue of pending operations.
184-
pub(crate) queue: Queue,
184+
queue: Queue,
185185
}
186186

187187
impl List {
@@ -240,7 +240,7 @@ impl Drop for ListGuard<'_> {
240240
let mut list = guard.take().unwrap();
241241

242242
// Tasks to wakeup after releasing the lock.
243-
let mut tasks = vec![];
243+
let mut tasks = alloc::vec![];
244244

245245
// Process every node left in the queue.
246246
if let Some(start_node) = inner.list.queue.pop() {
@@ -623,6 +623,7 @@ impl ListenerSlab {
623623
}
624624
}
625625

626+
#[derive(Debug)]
626627
pub(crate) enum Listener {
627628
/// The listener has a node inside of the linked list.
628629
HasNode(NonZeroUsize),
@@ -631,6 +632,16 @@ pub(crate) enum Listener {
631632
Queued(Arc<TaskWaiting>),
632633
}
633634

635+
impl PartialEq for Listener {
636+
fn eq(&self, other: &Self) -> bool {
637+
match (self, other) {
638+
(Self::HasNode(a), Self::HasNode(b)) => a == b,
639+
(Self::Queued(a), Self::Queued(b)) => Arc::ptr_eq(a, b),
640+
_ => false,
641+
}
642+
}
643+
}
644+
634645
/// A simple mutex type that optimistically assumes that the lock is uncontended.
635646
pub(crate) struct Mutex<T> {
636647
/// The inner value.
@@ -752,7 +763,7 @@ mod tests {
752763
assert_eq!(listeners.notified, 0);
753764
assert_eq!(listeners.tail, Some(key3));
754765
assert_eq!(listeners.head, Some(key1));
755-
assert_eq!(listeners.next, Some(key1));
766+
assert_eq!(listeners.start, Some(key1));
756767
assert_eq!(listeners.first_empty, NonZeroUsize::new(4).unwrap());
757768
assert_eq!(listeners.listeners[0], Entry::Sentinel);
758769
assert_eq!(
@@ -787,7 +798,7 @@ mod tests {
787798
assert_eq!(listeners.notified, 0);
788799
assert_eq!(listeners.tail, Some(key3));
789800
assert_eq!(listeners.head, Some(key1));
790-
assert_eq!(listeners.next, Some(key1));
801+
assert_eq!(listeners.start, Some(key1));
791802
assert_eq!(listeners.first_empty, NonZeroUsize::new(2).unwrap());
792803
assert_eq!(listeners.listeners[0], Entry::Sentinel);
793804
assert_eq!(
@@ -828,7 +839,7 @@ mod tests {
828839
assert_eq!(listeners.notified, 1);
829840
assert_eq!(listeners.tail, Some(key3));
830841
assert_eq!(listeners.head, Some(key1));
831-
assert_eq!(listeners.next, Some(key2));
842+
assert_eq!(listeners.start, Some(key2));
832843
assert_eq!(listeners.first_empty, NonZeroUsize::new(4).unwrap());
833844
assert_eq!(listeners.listeners[0], Entry::Sentinel);
834845
assert_eq!(
@@ -863,7 +874,7 @@ mod tests {
863874
assert_eq!(listeners.notified, 0);
864875
assert_eq!(listeners.tail, Some(key3));
865876
assert_eq!(listeners.head, Some(key2));
866-
assert_eq!(listeners.next, Some(key2));
877+
assert_eq!(listeners.start, Some(key2));
867878
assert_eq!(listeners.first_empty, NonZeroUsize::new(1).unwrap());
868879
assert_eq!(listeners.listeners[0], Entry::Sentinel);
869880
assert_eq!(
@@ -906,7 +917,7 @@ mod tests {
906917
// Register one.
907918
assert_eq!(
908919
listeners.register(
909-
Pin::new(&mut Some(Listener::Inserted(key2))),
920+
Pin::new(&mut Some(Listener::HasNode(key2))),
910921
TaskRef::Waker(&waker)
911922
),
912923
Some(false)
@@ -916,7 +927,7 @@ mod tests {
916927
assert_eq!(listeners.notified, 0);
917928
assert_eq!(listeners.tail, Some(key3));
918929
assert_eq!(listeners.head, Some(key1));
919-
assert_eq!(listeners.next, Some(key1));
930+
assert_eq!(listeners.start, Some(key1));
920931
assert_eq!(listeners.first_empty, NonZeroUsize::new(4).unwrap());
921932
assert_eq!(listeners.listeners[0], Entry::Sentinel);
922933
assert_eq!(
@@ -951,7 +962,7 @@ mod tests {
951962
assert_eq!(listeners.notified, 2);
952963
assert_eq!(listeners.tail, Some(key3));
953964
assert_eq!(listeners.head, Some(key1));
954-
assert_eq!(listeners.next, Some(key3));
965+
assert_eq!(listeners.start, Some(key3));
955966
assert_eq!(listeners.first_empty, NonZeroUsize::new(4).unwrap());
956967
assert_eq!(listeners.listeners[0], Entry::Sentinel);
957968
assert_eq!(
@@ -982,7 +993,7 @@ mod tests {
982993
assert!(woken.load(Ordering::SeqCst));
983994
assert_eq!(
984995
listeners.register(
985-
Pin::new(&mut Some(Listener::Inserted(key2))),
996+
Pin::new(&mut Some(Listener::HasNode(key2))),
986997
TaskRef::Waker(&waker)
987998
),
988999
Some(true)
@@ -1007,7 +1018,7 @@ mod tests {
10071018
// Register one.
10081019
assert_eq!(
10091020
listeners.register(
1010-
Pin::new(&mut Some(Listener::Inserted(key2))),
1021+
Pin::new(&mut Some(Listener::HasNode(key2))),
10111022
TaskRef::Waker(&waker)
10121023
),
10131024
Some(false)
@@ -1017,7 +1028,7 @@ mod tests {
10171028
assert_eq!(listeners.notified, 0);
10181029
assert_eq!(listeners.tail, Some(key3));
10191030
assert_eq!(listeners.head, Some(key1));
1020-
assert_eq!(listeners.next, Some(key1));
1031+
assert_eq!(listeners.start, Some(key1));
10211032
assert_eq!(listeners.first_empty, NonZeroUsize::new(4).unwrap());
10221033
assert_eq!(listeners.listeners[0], Entry::Sentinel);
10231034
assert_eq!(
@@ -1052,7 +1063,7 @@ mod tests {
10521063
assert_eq!(listeners.notified, 1);
10531064
assert_eq!(listeners.tail, Some(key3));
10541065
assert_eq!(listeners.head, Some(key1));
1055-
assert_eq!(listeners.next, Some(key2));
1066+
assert_eq!(listeners.start, Some(key2));
10561067
assert_eq!(listeners.first_empty, NonZeroUsize::new(4).unwrap());
10571068
assert_eq!(listeners.listeners[0], Entry::Sentinel);
10581069
assert_eq!(
@@ -1087,7 +1098,7 @@ mod tests {
10871098
assert_eq!(listeners.notified, 1);
10881099
assert_eq!(listeners.tail, Some(key3));
10891100
assert_eq!(listeners.head, Some(key1));
1090-
assert_eq!(listeners.next, Some(key2));
1101+
assert_eq!(listeners.start, Some(key2));
10911102
assert_eq!(listeners.first_empty, NonZeroUsize::new(4).unwrap());
10921103
assert_eq!(listeners.listeners[0], Entry::Sentinel);
10931104
assert_eq!(
@@ -1122,7 +1133,7 @@ mod tests {
11221133
assert_eq!(listeners.notified, 0);
11231134
assert_eq!(listeners.tail, Some(key3));
11241135
assert_eq!(listeners.head, Some(key2));
1125-
assert_eq!(listeners.next, Some(key2));
1136+
assert_eq!(listeners.start, Some(key2));
11261137
assert_eq!(listeners.first_empty, NonZeroUsize::new(1).unwrap());
11271138
assert_eq!(listeners.listeners[0], Entry::Sentinel);
11281139
assert_eq!(
@@ -1154,7 +1165,7 @@ mod tests {
11541165
assert_eq!(listeners.notified, 1);
11551166
assert_eq!(listeners.tail, Some(key3));
11561167
assert_eq!(listeners.head, Some(key2));
1157-
assert_eq!(listeners.next, Some(key3));
1168+
assert_eq!(listeners.start, Some(key3));
11581169
assert_eq!(listeners.first_empty, NonZeroUsize::new(1).unwrap());
11591170
assert_eq!(listeners.listeners[0], Entry::Sentinel);
11601171
assert_eq!(
@@ -1186,7 +1197,7 @@ mod tests {
11861197
assert_eq!(listeners.notified, 1);
11871198
assert_eq!(listeners.tail, Some(key3));
11881199
assert_eq!(listeners.head, Some(key3));
1189-
assert_eq!(listeners.next, None);
1200+
assert_eq!(listeners.start, None);
11901201
assert_eq!(listeners.first_empty, NonZeroUsize::new(2).unwrap());
11911202
assert_eq!(listeners.listeners[0], Entry::Sentinel);
11921203
assert_eq!(
@@ -1222,11 +1233,11 @@ mod tests {
12221233

12231234
assert_eq!(
12241235
listener1,
1225-
Some(Listener::Inserted(NonZeroUsize::new(1).unwrap()))
1236+
Some(Listener::HasNode(NonZeroUsize::new(1).unwrap()))
12261237
);
12271238
assert_eq!(
12281239
listener2,
1229-
Some(Listener::Inserted(NonZeroUsize::new(2).unwrap()))
1240+
Some(Listener::HasNode(NonZeroUsize::new(2).unwrap()))
12301241
);
12311242

12321243
// Register a waker in the second listener.

0 commit comments

Comments
 (0)