26 #include <linux/kernel.h> 61 if (
stats->nts_count == 0 &&
77 if (
stats->nts_count == 1) {
84 M0_CASSERT(
sizeof value <= sizeof stats->nts_sum.u_hi);
97 if (
stats->nts_count == 0) {
114 return stats->nts_min;
121 return stats->nts_max;
155 bv, bv_offset + len_total);
228 unsigned long messages,
242 unsigned long messages,
245 unsigned long messages_delta;
248 uint64_t time_delta_ns;
249 unsigned long m_per_sec;
251 static const struct {
255 { .pow = 1000000000, .value = ULONG_MAX / 1000000000 },
256 { .pow = 100000000, .value = ULONG_MAX / 100000000 },
257 { .pow = 10000000, .value = ULONG_MAX / 10000000 },
258 { .pow = 1000000, .value = ULONG_MAX / 1000000 },
259 { .pow = 100000, .value = ULONG_MAX / 100000 },
260 { .pow = 10000, .value = ULONG_MAX / 10000 },
261 { .pow = 1000, .value = ULONG_MAX / 1000 },
262 { .pow = 100, .value = ULONG_MAX / 100 },
263 { .pow = 10, .value = ULONG_MAX / 10 },
264 { .pow = 1, .value = ULONG_MAX },
276 if (timestamp < time_next)
295 if (messages_delta <= pow10[
i].
value)
298 m_per_sec = (messages_delta * pow10[
i].pow / time_delta_ns) *
m0_bcount_t m0_net_test_stats_serialize(enum m0_net_test_serialize_op op, struct m0_net_test_stats *stats, struct m0_bufvec *bv, m0_bcount_t bv_offset)
void m0_net_test_timestamp_init(struct m0_net_test_timestamp *t, uint64_t seq)
m0_time_t ntmps_last_time
m0_bcount_t m0_net_test_serialize(enum m0_net_test_serialize_op op, void *obj, const struct m0_net_test_descr descr[], size_t descr_nr, struct m0_bufvec *bv, m0_bcount_t bv_offset)
M0_INTERNAL bool m0_uint128_eq(const struct m0_uint128 *u0, const struct m0_uint128 *u1)
uint64_t m0_time_nanoseconds(const m0_time_t time)
void m0_net_test_stats_reset(struct m0_net_test_stats *stats)
struct m0_uint128 nts_sum_sqr
int const char const void * value
void m0_net_test_msg_nr_add(struct m0_net_test_msg_nr *msg_nr, const struct m0_net_test_msg_nr *msg_nr2)
static m0_bcount_t net_test_len_accumulate(m0_bcount_t accumulator, m0_bcount_t addend)
unsigned long m0_net_test_stats_max(const struct m0_net_test_stats *stats)
m0_bcount_t m0_net_test_timestamp_serialize(enum m0_net_test_serialize_op op, struct m0_net_test_timestamp *t, struct m0_bufvec *bv, m0_bcount_t bv_offset)
static const struct m0_uint128 zero
TYPE_DESCR(m0_net_test_stats)
m0_time_t m0_time_now(void)
static struct m0_thread t[8]
m0_time_t m0_net_test_mps_add(struct m0_net_test_mps *mps, unsigned long messages, m0_time_t timestamp)
#define FIELD_DESCR(type, field)
m0_time_t ntmps_time_interval
m0_time_t m0_time_add(const m0_time_t t1, const m0_time_t t2)
uint64_t m0_time_seconds(const m0_time_t time)
void m0_net_test_mps_init(struct m0_net_test_mps *mps, unsigned long messages, m0_time_t timestamp, m0_time_t interval)
m0_time_t m0_net_test_stats_time_min(struct m0_net_test_stats *stats)
m0_time_t m0_net_test_stats_time_max(struct m0_net_test_stats *stats)
M0_INTERNAL void m0_uint128_mul64(struct m0_uint128 *res, uint64_t a, uint64_t b)
m0_time_t m0_time_sub(const m0_time_t t1, const m0_time_t t2)
unsigned long ntmps_last_nr
unsigned long m0_net_test_stats_min(const struct m0_net_test_stats *stats)
bool m0_net_test_stats_invariant(const struct m0_net_test_stats *stats)
#define M0_UINT128(hi, lo)
void m0_net_test_stats_add_stats(struct m0_net_test_stats *stats, const struct m0_net_test_stats *stats2)
void m0_net_test_stats_add(struct m0_net_test_stats *stats, unsigned long value)
struct m0_uint128 nts_sum
struct m0_net_test_stats ntmps_stats
M0_INTERNAL void m0_uint128_add(struct m0_uint128 *res, const struct m0_uint128 *a, const struct m0_uint128 *b)
#define USE_TYPE_DESCR(type_name)
void m0_net_test_stats_time_add(struct m0_net_test_stats *stats, m0_time_t time)