DPDK
2.2.0
Main Page
Related Pages
Data Structures
Files
Examples
File List
Globals
lib
librte_eal
common
include
rte_keepalive.h
Go to the documentation of this file.
1
/*-
2
* BSD LICENSE
3
*
4
* Copyright 2015 Intel Shannon Ltd. All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
8
* are met:
9
*
10
* * Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* * Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in
14
* the documentation and/or other materials provided with the
15
* distribution.
16
* * Neither the name of Intel Corporation nor the names of its
17
* contributors may be used to endorse or promote products derived
18
* from this software without specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
*/
32
39
#ifndef _KEEPALIVE_H_
40
#define _KEEPALIVE_H_
41
42
#include <
rte_memory.h
>
43
44
#ifndef RTE_KEEPALIVE_MAXCORES
45
48
#define RTE_KEEPALIVE_MAXCORES RTE_MAX_LCORE
49
#endif
50
51
58
typedef
void (*
rte_keepalive_failure_callback_t
)(
59
void
*data,
60
const
int
id_core);
61
62
67
struct
rte_keepalive
{
69
enum
{
70
ALIVE = 1,
71
MISSING = 0,
72
DEAD = 2,
73
GONE = 3
74
}
__rte_cache_aligned
state_flags
[
RTE_KEEPALIVE_MAXCORES
];
75
77
uint64_t
last_alive
[
RTE_KEEPALIVE_MAXCORES
];
78
83
uint8_t
active_cores
[
RTE_KEEPALIVE_MAXCORES
];
84
86
rte_keepalive_failure_callback_t
callback
;
87
92
void
*
callback_data
;
93
uint64_t tsc_initial;
94
uint64_t tsc_mhz;
95
};
96
97
107
struct
rte_keepalive
*
rte_keepalive_create
(
108
rte_keepalive_failure_callback_t
callback
,
109
void
*data);
110
111
117
void
rte_keepalive_dispatch_pings
(
void
*ptr_timer,
void
*ptr_data);
118
119
127
void
rte_keepalive_register_core
(
struct
rte_keepalive
*keepcfg,
128
const
int
id_core);
129
130
139
static
inline
void
140
rte_keepalive_mark_alive
(
struct
rte_keepalive
*keepcfg)
141
{
142
keepcfg->
state_flags
[
rte_lcore_id
()] = ALIVE;
143
}
144
145
146
#endif
/* _KEEPALIVE_H_ */
Generated by
1.8.1.2