/* * Copyright (c) 2024 Mustafa Abdullah Kus, Sparse Technology * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include #include #include LOG_MODULE_REGISTER(pm_summary, CONFIG_PROMETHEUS_LOG_LEVEL); int prometheus_summary_observe(struct prometheus_summary *summary, double value) { if (!summary) { return -EINVAL; } /* increment count */ summary->count++; /* update sum */ summary->sum += value; return 0; } int prometheus_summary_observe_set(struct prometheus_summary *summary, double value, unsigned long count) { unsigned long old_count; double old_sum; if (summary == NULL) { return -EINVAL; } if (value == summary->sum && count == summary->count) { return 0; } old_count = summary->count; if (count < old_count) { LOG_DBG("Cannot set summary count to a lower value"); return -EINVAL; } summary->count += (count - old_count); old_sum = summary->sum; summary->sum += (value - old_sum); return 0; }