Skip to content

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:

#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])