DPDK
2.2.0
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
switch
(eal_timer_source) {
154
case
EAL_TIMER_TSC:
155
return
rte_get_tsc_cycles
();
156
case
EAL_TIMER_HPET:
157
#ifdef RTE_LIBEAL_USE_HPET
158
return
rte_get_hpet_cycles();
159
#endif
160
default
:
rte_panic
(
"Invalid timer source specified\n"
);
161
}
162
}
163
170
static
inline
uint64_t
171
rte_get_timer_hz
(
void
)
172
{
173
switch
(eal_timer_source) {
174
case
EAL_TIMER_TSC:
175
return
rte_get_tsc_hz
();
176
case
EAL_TIMER_HPET:
177
#ifdef RTE_LIBEAL_USE_HPET
178
return
rte_get_hpet_hz();
179
#endif
180
default
:
rte_panic
(
"Invalid timer source specified\n"
);
181
}
182
}
183
190
void
191
rte_delay_us
(
unsigned
us);
192
199
static
inline
void
200
rte_delay_ms
(
unsigned
ms)
201
{
202
rte_delay_us
(ms * 1000);
203
}
204
205
#endif
/* _RTE_CYCLES_H_ */
Generated by
1.8.1.2