DPDK
25.11.0
Toggle main menu visibility
Loading...
Searching...
No Matches
rte_member_sketch.h
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright(c) 2017 Intel Corporation
3
*/
4
5
#ifndef RTE_MEMBER_SKETCH_H
6
#define RTE_MEMBER_SKETCH_H
7
8
#include <
rte_vect.h
>
9
#include <
rte_ring_elem.h
>
10
11
#ifdef __cplusplus
12
extern
"C"
{
13
#endif
14
15
#define NUM_ROW_SCALAR 5
16
#define INTERVAL (1 << 15)
17
18
#if !RTE_IS_POWER_OF_2(INTERVAL)
19
#error sketch INTERVAL macro must be a power of 2
20
#endif
21
22
int
23
rte_member_create_sketch(
struct
rte_member_setsum *ss,
24
const
struct
rte_member_parameters
*params,
25
struct
rte_ring
*r);
26
27
int
28
rte_member_lookup_sketch(
const
struct
rte_member_setsum *setsum,
29
const
void
*key,
member_set_t
*set_id);
30
31
int
32
rte_member_add_sketch(
const
struct
rte_member_setsum *setsum,
33
const
void
*key,
34
member_set_t
set_id);
35
36
int
37
rte_member_add_sketch_byte_count(
const
struct
rte_member_setsum *ss,
38
const
void
*key, uint32_t byte_count);
39
40
void
41
sketch_update_scalar(
const
struct
rte_member_setsum *ss,
42
const
void
*key,
43
uint32_t count);
44
45
uint64_t
46
sketch_lookup_scalar(
const
struct
rte_member_setsum *ss,
47
const
void
*key);
48
49
void
50
sketch_delete_scalar(
const
struct
rte_member_setsum *ss,
51
const
void
*key);
52
53
int
54
rte_member_delete_sketch(
const
struct
rte_member_setsum *setsum,
55
const
void
*key);
56
57
int
58
rte_member_query_sketch(
const
struct
rte_member_setsum *setsum,
59
const
void
*key, uint64_t *output);
60
61
void
62
rte_member_free_sketch(
struct
rte_member_setsum *ss);
63
64
void
65
rte_member_reset_sketch(
const
struct
rte_member_setsum *setsum);
66
67
int
68
rte_member_report_heavyhitter_sketch(
const
struct
rte_member_setsum *setsum,
69
void
**key, uint64_t *count);
70
71
void
72
rte_member_update_heap(
const
struct
rte_member_setsum *ss);
73
74
static
__rte_always_inline
uint64_t
75
count_min(
const
struct
rte_member_setsum *ss,
const
uint32_t *hash_results)
76
{
77
uint64_t *count_array = ss->table;
78
uint64_t count;
79
uint32_t cur_row;
80
uint64_t min = UINT64_MAX;
81
82
for
(cur_row = 0; cur_row < ss->num_row; cur_row++) {
83
uint64_t cnt = count_array[cur_row * ss->num_col + hash_results[cur_row]];
84
85
if
(cnt < min)
86
min = cnt;
87
}
88
count = min;
89
90
return
count;
91
}
92
93
#ifdef __cplusplus
94
}
95
#endif
96
97
#endif
/* RTE_MEMBER_SKETCH_H */
__rte_always_inline
#define __rte_always_inline
Definition
rte_common.h:490
member_set_t
uint16_t member_set_t
Definition
rte_member.h:64
rte_ring_elem.h
rte_vect.h
rte_member_parameters
Definition
rte_member.h:186
rte_ring
Definition
rte_ring_core.h:116
lib
member
rte_member_sketch.h
Generated by
1.17.0