DPDK
17.05.2
Main Page
Related Pages
Data Structures
Files
Examples
File List
Globals
lib
librte_eal
common
include
generic
rte_cycles.h
Go to the documentation of this file.
1
/*-
2
* BSD LICENSE
3
*
4
* Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
*
11
* * Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* * Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in
15
* the documentation and/or other materials provided with the
16
* distribution.
17
* * Neither the name of Intel Corporation nor the names of its
18
* contributors may be used to endorse or promote products derived
19
* from this software without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
*/
33
/* BSD LICENSE
34
*
35
* Copyright(c) 2013 6WIND.
36
*
37
* Redistribution and use in source and binary forms, with or without
38
* modification, are permitted provided that the following conditions
39
* are met:
40
*
41
* * Redistributions of source code must retain the above copyright
42
* notice, this list of conditions and the following disclaimer.
43
* * Redistributions in binary form must reproduce the above copyright
44
* notice, this list of conditions and the following disclaimer in
45
* the documentation and/or other materials provided with the
46
* distribution.
47
* * Neither the name of 6WIND S.A. nor the names of its
48
* contributors may be used to endorse or promote products derived
49
* from this software without specific prior written permission.
50
*
51
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
52
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
53
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
54
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
55
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
56
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
57
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
58
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
59
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
60
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
61
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
62
*/
63
64
#ifndef _RTE_CYCLES_H_
65
#define _RTE_CYCLES_H_
66
73
#include <stdint.h>
74
#include <
rte_debug.h
>
75
#include <
rte_atomic.h
>
76
77
#define MS_PER_S 1000
78
#define US_PER_S 1000000
79
#define NS_PER_S 1000000000
80
81
enum
timer_source {
82
EAL_TIMER_TSC = 0,
83
EAL_TIMER_HPET
84
};
85
extern
enum
timer_source eal_timer_source;
86
93
uint64_t
94
rte_get_tsc_hz
(
void
);
95
102
static
inline
uint64_t
103
rte_get_tsc_cycles
(
void
);
104
105
#ifdef RTE_LIBEAL_USE_HPET
106
115
uint64_t
116
rte_get_hpet_cycles(
void
);
117
124
uint64_t
125
rte_get_hpet_hz(
void
);
126
140
int
rte_eal_hpet_init(
int
make_default);
141
142
#endif
143
150
static
inline
uint64_t
151
rte_get_timer_cycles
(
void
)
152
{
153
#ifdef RTE_LIBEAL_USE_HPET
154
switch
(eal_timer_source) {
155
case
EAL_TIMER_TSC:
156
#endif
157
return
rte_get_tsc_cycles
();
158
#ifdef RTE_LIBEAL_USE_HPET
159
case
EAL_TIMER_HPET:
160
return
rte_get_hpet_cycles();
161
default
:
rte_panic
(
"Invalid timer source specified\n"
);
162
}
163
#endif
164
}
165
172
static
inline
uint64_t
173
rte_get_timer_hz
(
void
)
174
{
175
#ifdef RTE_LIBEAL_USE_HPET
176
switch
(eal_timer_source) {
177
case
EAL_TIMER_TSC:
178
#endif
179
return
rte_get_tsc_hz
();
180
#ifdef RTE_LIBEAL_USE_HPET
181
case
EAL_TIMER_HPET:
182
return
rte_get_hpet_hz();
183
default
:
rte_panic
(
"Invalid timer source specified\n"
);
184
}
185
#endif
186
}
195
extern
void
196
(*rte_delay_us)(
unsigned
int
us);
197
204
static
inline
void
205
rte_delay_ms
(
unsigned
ms)
206
{
207
rte_delay_us
(ms * 1000);
208
}
209
216
void
rte_delay_us_block
(
unsigned
int
us);
217
225
void
rte_delay_us_callback_register
(
void
(*userfunc)(
unsigned
int
));
226
227
#endif
/* _RTE_CYCLES_H_ */
Generated by
1.8.1.2