Stat series
struct stat_bucket { struct stat_series *parent; atomic_size_t count; atomic_size_t sum; void *private;};struct stat_bucket referenced types:
struct stat_series { stat_series_callback bucket_reset; struct stat_bucket *buckets; uint32_t nbuckets; uint32_t current; time_t bucket_us; uint64_t last_update_us; void *private; struct spinlock lock;};struct stat_series referenced types:
typedef size_t (*stat_series_callback)(struct stat_bucket * bucket);type alias stat_series_callback referenced types:
Defines
Section titled “Defines”#define stat_series_for_each(series, iter) \ for (uint32_t __i = 0; \ (iter = &((series)->buckets[__i]), __i < (series)->nbuckets); __i++)#define STAT_SERIES_DEFINE(name, n, bucket_us) \ static struct stat_bucket name##_buckets[(n)] = {0}; \ static struct stat_series name = { \ .buckets = name##_buckets, \ .nbuckets = (n), \ .bucket_us = (bucket_us), \ };#define STAT_SERIES_CUR_BUCKET(s) (&(s)->buckets[(s)->current])