FD.io VPP
v20.01-48-g3e0dafb74
Vector Packet Processing
elog_samples.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2016 Cisco and/or its affiliates.
3
* Licensed under the Apache License, Version 2.0 (the "License");
4
* you may not use this file except in compliance with the License.
5
* You may obtain a copy of the License at:
6
*
7
* http://www.apache.org/licenses/LICENSE-2.0
8
*
9
* Unless required by applicable law or agreed to in writing, software
10
* distributed under the License is distributed on an "AS IS" BASIS,
11
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
* See the License for the specific language governing permissions and
13
* limitations under the License.
14
*/
15
16
#include <
vlib/vlib.h
>
17
#include <
vppinfra/elog.h
>
18
19
static
inline
void
20
elog_four_int_sample
(
u32
*
data
)
21
{
22
ELOG_TYPE_DECLARE
(e) =
23
{
24
.format =
"four int: first %d second %d third %d fourth %d"
,.format_args =
25
"i4i4i4i4"
,};
26
struct
27
{
28
u32
data[4];
29
} *ed;
30
ed =
ELOG_DATA
(&
vlib_global_main
.
elog_main
, e);
31
ed->data[0] = data[0];
32
ed->data[1] = data[1];
33
ed->data[2] = data[2];
34
ed->data[3] = data[3];
35
}
36
37
static
inline
void
38
elog_four_int_track_sample
(
u32
*
data
)
39
{
40
ELOG_TYPE_DECLARE
(e) =
41
{
42
.format =
43
"four_int_track: first %d second %d third %d fourth %d"
,.format_args =
44
"i4i4i4i4"
,};
45
struct
46
{
47
u32
data[4];
48
} *ed;
49
ELOG_TRACK
(sample_track);
50
ed =
ELOG_TRACK_DATA
(&
vlib_global_main
.
elog_main
, e, sample_track);
51
ed->data[0] = data[0];
52
ed->data[1] = data[1];
53
ed->data[2] = data[2];
54
ed->data[3] = data[3];
55
}
56
57
static
inline
void
58
elog_enum_sample
(
u8
which)
59
{
60
ELOG_TYPE_DECLARE
(e) =
61
{
62
.format =
"my enum: %s"
,.format_args =
"t1"
,.n_enum_strings =
63
2,.enum_strings =
64
{
65
"string 1"
,
"string 2"
,},};
66
struct
67
{
68
u8
which;
69
} *ed;
70
ed =
ELOG_DATA
(&
vlib_global_main
.
elog_main
, e);
71
ed->which = which;
72
}
73
74
static
inline
void
75
elog_one_datum_sample
(
u32
data
)
76
{
77
ELOG_TYPE_DECLARE
(e) =
78
{
79
.format =
"one datum: %d"
,.format_args =
"i4"
,};
80
81
elog
(&
vlib_global_main
.
elog_main
, &e, data);
82
}
83
84
static
clib_error_t
*
85
test_elog_command_fn
(
vlib_main_t
*
vm
,
86
unformat_input_t
* input,
vlib_cli_command_t
* cmd)
87
{
88
int
i
;
89
u32
samples[4];
90
91
for
(i = 0; i < 10; i++)
92
{
93
samples[0] =
i
;
94
samples[1] = i + 1;
95
samples[2] = i + 2;
96
samples[3] = i + 3;
97
98
elog_four_int_sample
(samples);
99
elog_four_int_track_sample
(samples);
100
elog_enum_sample
(0);
101
elog_enum_sample
(1);
102
elog_one_datum_sample
(i);
103
}
104
105
return
0;
106
}
107
108
/* *INDENT-OFF* */
109
VLIB_CLI_COMMAND
(test_elog_command,
static
) = {
110
.path =
"test elog sample"
,
111
.short_help =
"test elog sample"
,
112
.function =
test_elog_command_fn
,
113
};
114
/* *INDENT-ON* */
115
116
/*
117
* fd.io coding-style-patch-verification: ON
118
*
119
* Local Variables:
120
* eval: (c-set-style "gnu")
121
* End:
122
*/
vlib_global_main
vlib_main_t vlib_global_main
Definition:
main.c:1943
test_elog_command_fn
static clib_error_t * test_elog_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition:
elog_samples.c:85
elog_four_int_sample
static void elog_four_int_sample(u32 *data)
Definition:
elog_samples.c:20
i
int i
Definition:
flowhash_template.h:376
u8
unsigned char u8
Definition:
types.h:56
u32
unsigned int u32
Definition:
types.h:88
ELOG_TRACK
#define ELOG_TRACK(f)
Definition:
elog.h:471
unformat_input_t
struct _unformat_input_t unformat_input_t
ELOG_DATA
#define ELOG_DATA(em, f)
Definition:
elog.h:484
elog
static void elog(elog_main_t *em, elog_event_type_t *type, u32 data)
Log a single-datum event.
Definition:
elog.h:367
vm
vlib_main_t * vm
Definition:
in2out_ed.c:1810
elog.h
The fine-grained event logger allows lightweight, thread-safe event logging at minimum cost...
elog_four_int_track_sample
static void elog_four_int_track_sample(u32 *data)
Definition:
elog_samples.c:38
vlib_main_t::elog_main
elog_main_t elog_main
Definition:
main.h:193
ELOG_TYPE_DECLARE
#define ELOG_TYPE_DECLARE(f)
Definition:
elog.h:442
vlib.h
VLIB_CLI_COMMAND
#define VLIB_CLI_COMMAND(x,...)
Definition:
cli.h:152
ELOG_TRACK_DATA
#define ELOG_TRACK_DATA(em, f, track)
Definition:
elog.h:478
data
u8 data[128]
Definition:
ipsec_types.api:87
clib_error_t
Definition:
clib_error.h:21
vlib_main_t
Definition:
main.h:83
vlib_cli_command_t
Definition:
cli.h:91
elog_enum_sample
static void elog_enum_sample(u8 which)
Definition:
elog_samples.c:58
elog_one_datum_sample
static void elog_one_datum_sample(u32 data)
Definition:
elog_samples.c:75
src
examples
vlib
elog_samples.c
Generated on Wed Sep 9 2020 00:03:12 for FD.io VPP by
1.8.13