aboutsummaryrefslogtreecommitdiff
path: root/util/timehist.c
diff options
context:
space:
mode:
authorCy Schubert <cy@FreeBSD.org>2023-09-18 19:59:52 +0000
committerCy Schubert <cy@FreeBSD.org>2023-09-18 19:59:52 +0000
commit401770e05c71ecb5ae61a59d316069b4b78bf622 (patch)
treea66e3d57ff5dde81aaa0fdc4c2d86c8b7a525ae0 /util/timehist.c
parent7699e1386a16236002b26107ffd2dcbde375e197 (diff)
Diffstat (limited to 'util/timehist.c')
-rw-r--r--util/timehist.c44
1 files changed, 14 insertions, 30 deletions
diff --git a/util/timehist.c b/util/timehist.c
index 61cc995fd8ef..2063fe80eead 100644
--- a/util/timehist.c
+++ b/util/timehist.c
@@ -4,22 +4,22 @@
* Copyright (c) 2007, NLnet Labs. All rights reserved.
*
* This software is open source.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
- *
+ *
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
- *
+ *
* Neither the name of the NLNET LABS nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -46,6 +46,7 @@
#include <sys/types.h>
#include "util/timehist.h"
#include "util/log.h"
+#include "util/timeval_func.h"
/** special timestwo operation for time values in histogram setup */
static void
@@ -83,12 +84,12 @@ dosetup(struct timehist* hist)
struct timehist* timehist_setup(void)
{
- struct timehist* hist = (struct timehist*)calloc(1,
+ struct timehist* hist = (struct timehist*)calloc(1,
sizeof(struct timehist));
if(!hist)
return NULL;
hist->num = NUM_BUCKETS_HIST;
- hist->buckets = (struct th_buck*)calloc(hist->num,
+ hist->buckets = (struct th_buck*)calloc(hist->num,
sizeof(struct th_buck));
if(!hist->buckets) {
free(hist);
@@ -114,23 +115,6 @@ void timehist_clear(struct timehist* hist)
hist->buckets[i].count = 0;
}
-/** histogram compare of time values */
-static int
-timeval_smaller(const struct timeval* x, const struct timeval* y)
-{
-#ifndef S_SPLINT_S
- if(x->tv_sec < y->tv_sec)
- return 1;
- else if(x->tv_sec == y->tv_sec) {
- if(x->tv_usec <= y->tv_usec)
- return 1;
- else return 0;
- }
- else return 0;
-#endif
-}
-
-
void timehist_insert(struct timehist* hist, struct timeval* tv)
{
size_t i;
@@ -194,7 +178,7 @@ timehist_count(struct timehist* hist)
return res;
}
-double
+double
timehist_quartile(struct timehist* hist, double q)
{
double lookfor, passed, res;
@@ -209,22 +193,22 @@ timehist_quartile(struct timehist* hist, double q)
lookfor *= q;
passed = 0;
i = 0;
- while(i+1 < hist->num &&
+ while(i+1 < hist->num &&
passed+(double)hist->buckets[i].count < lookfor) {
passed += (double)hist->buckets[i++].count;
}
/* got the right bucket */
#ifndef S_SPLINT_S
- low = (double)hist->buckets[i].lower.tv_sec +
+ low = (double)hist->buckets[i].lower.tv_sec +
(double)hist->buckets[i].lower.tv_usec/1000000.;
- up = (double)hist->buckets[i].upper.tv_sec +
+ up = (double)hist->buckets[i].upper.tv_sec +
(double)hist->buckets[i].upper.tv_usec/1000000.;
#endif
res = (lookfor - passed)*(up-low)/((double)hist->buckets[i].count);
return low+res;
}
-void
+void
timehist_export(struct timehist* hist, long long* array, size_t sz)
{
size_t i;
@@ -235,7 +219,7 @@ timehist_export(struct timehist* hist, long long* array, size_t sz)
array[i] = (long long)hist->buckets[i].count;
}
-void
+void
timehist_import(struct timehist* hist, long long* array, size_t sz)
{
size_t i;