diff --git a/include/spdk/histogram_data.h b/include/spdk/histogram_data.h index 25649397a..5f114fe69 100644 --- a/include/spdk/histogram_data.h +++ b/include/spdk/histogram_data.h @@ -106,6 +106,12 @@ __spdk_histogram_get_count(const struct spdk_histogram_data *h, uint32_t range, return h->bucket[(range << SPDK_HISTOGRAM_BUCKET_SHIFT(h)) + index]; } +static inline uint64_t * +__spdk_histogram_get_bucket(const struct spdk_histogram_data *h, uint32_t range, uint32_t index) +{ + return &h->bucket[(range << SPDK_HISTOGRAM_BUCKET_SHIFT(h)) + index]; +} + static inline void spdk_histogram_data_reset(struct spdk_histogram_data *histogram) { @@ -203,6 +209,17 @@ spdk_histogram_data_iterate(const struct spdk_histogram_data *histogram, } } +static inline void +spdk_histogram_data_merge(const struct spdk_histogram_data *dst, + const struct spdk_histogram_data *src) +{ + uint64_t i; + + for (i = 0; i < SPDK_HISTOGRAM_NUM_BUCKETS(dst); i++) { + dst->bucket[i] += src->bucket[i]; + } +} + static inline struct spdk_histogram_data * spdk_histogram_data_alloc_sized(uint32_t bucket_shift) {