• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #[cfg(tokio_internal_mt_counters)]
2 mod imp {
3     use std::sync::atomic::AtomicUsize;
4     use std::sync::atomic::Ordering::Relaxed;
5 
6     static NUM_MAINTENANCE: AtomicUsize = AtomicUsize::new(0);
7     static NUM_NOTIFY_LOCAL: AtomicUsize = AtomicUsize::new(0);
8     static NUM_UNPARKS_LOCAL: AtomicUsize = AtomicUsize::new(0);
9     static NUM_LIFO_SCHEDULES: AtomicUsize = AtomicUsize::new(0);
10     static NUM_LIFO_CAPPED: AtomicUsize = AtomicUsize::new(0);
11 
12     impl Drop for super::Counters {
drop(&mut self)13         fn drop(&mut self) {
14             let notifies_local = NUM_NOTIFY_LOCAL.load(Relaxed);
15             let unparks_local = NUM_UNPARKS_LOCAL.load(Relaxed);
16             let maintenance = NUM_MAINTENANCE.load(Relaxed);
17             let lifo_scheds = NUM_LIFO_SCHEDULES.load(Relaxed);
18             let lifo_capped = NUM_LIFO_CAPPED.load(Relaxed);
19 
20             println!("---");
21             println!("notifies (local): {}", notifies_local);
22             println!(" unparks (local): {}", unparks_local);
23             println!("     maintenance: {}", maintenance);
24             println!("  LIFO schedules: {}", lifo_scheds);
25             println!("     LIFO capped: {}", lifo_capped);
26         }
27     }
28 
inc_num_inc_notify_local()29     pub(crate) fn inc_num_inc_notify_local() {
30         NUM_NOTIFY_LOCAL.fetch_add(1, Relaxed);
31     }
32 
inc_num_unparks_local()33     pub(crate) fn inc_num_unparks_local() {
34         NUM_UNPARKS_LOCAL.fetch_add(1, Relaxed);
35     }
36 
inc_num_maintenance()37     pub(crate) fn inc_num_maintenance() {
38         NUM_MAINTENANCE.fetch_add(1, Relaxed);
39     }
40 
inc_lifo_schedules()41     pub(crate) fn inc_lifo_schedules() {
42         NUM_LIFO_SCHEDULES.fetch_add(1, Relaxed);
43     }
44 
inc_lifo_capped()45     pub(crate) fn inc_lifo_capped() {
46         NUM_LIFO_CAPPED.fetch_add(1, Relaxed);
47     }
48 }
49 
50 #[cfg(not(tokio_internal_mt_counters))]
51 mod imp {
inc_num_inc_notify_local()52     pub(crate) fn inc_num_inc_notify_local() {}
inc_num_unparks_local()53     pub(crate) fn inc_num_unparks_local() {}
inc_num_maintenance()54     pub(crate) fn inc_num_maintenance() {}
inc_lifo_schedules()55     pub(crate) fn inc_lifo_schedules() {}
inc_lifo_capped()56     pub(crate) fn inc_lifo_capped() {}
57 }
58 
59 #[derive(Debug)]
60 pub(crate) struct Counters;
61 
62 pub(super) use imp::*;
63