DPDK 21.11.9
rte_timer.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2010-2014 Intel Corporation
3 */
4
5#ifndef _RTE_TIMER_H_
6#define _RTE_TIMER_H_
7
37#include <stdio.h>
38#include <stdint.h>
39#include <stddef.h>
40#include <rte_common.h>
41#include <rte_config.h>
42#include <rte_spinlock.h>
43
44#ifdef __cplusplus
45extern "C" {
46#endif
47
48#define RTE_TIMER_STOP 0
49#define RTE_TIMER_PENDING 1
50#define RTE_TIMER_RUNNING 2
51#define RTE_TIMER_CONFIG 3
53#define RTE_TIMER_NO_OWNER -2
59 SINGLE,
60 PERIODICAL
61};
62
69 struct {
70 uint16_t state;
71 int16_t owner;
72 };
73 uint32_t u32;
74};
75
76#ifdef RTE_LIBRTE_TIMER_DEBUG
80struct rte_timer_debug_stats {
81 uint64_t reset;
82 uint64_t stop;
83 uint64_t manage;
84 uint64_t pending;
85};
86#endif
87
88struct rte_timer;
89
93typedef void (*rte_timer_cb_t)(struct rte_timer *, void *);
94
95#define MAX_SKIPLIST_DEPTH 10
96
101{
102 uint64_t expire;
103 struct rte_timer *sl_next[MAX_SKIPLIST_DEPTH];
104 volatile union rte_timer_status status;
105 uint64_t period;
107 void *arg;
108};
109
110
111#ifdef __cplusplus
115#define RTE_TIMER_INITIALIZER { \
116 0, \
117 {NULL}, \
118 {{RTE_TIMER_STOP, RTE_TIMER_NO_OWNER}}, \
119 0, \
120 NULL, \
121 NULL, \
122 }
123#else
127#define RTE_TIMER_INITIALIZER { \
128 .status = {{ \
129 .state = RTE_TIMER_STOP, \
130 .owner = RTE_TIMER_NO_OWNER, \
131 }}, \
132 }
133#endif
134
147int rte_timer_data_alloc(uint32_t *id_ptr);
148
159int rte_timer_data_dealloc(uint32_t id);
160
177
182
193void rte_timer_init(struct rte_timer *tim);
194
237int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
238 enum rte_timer_type type, unsigned tim_lcore,
239 rte_timer_cb_t fct, void *arg);
240
273void
274rte_timer_reset_sync(struct rte_timer *tim, uint64_t ticks,
275 enum rte_timer_type type, unsigned tim_lcore,
276 rte_timer_cb_t fct, void *arg);
277
301int rte_timer_stop(struct rte_timer *tim);
302
319
334
348__rte_experimental
350
367
378
414int
415rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim,
416 uint64_t ticks, enum rte_timer_type type,
417 unsigned int tim_lcore, rte_timer_cb_t fct, void *arg);
418
436int
437rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim);
438
442typedef void (*rte_timer_alt_manage_cb_t)(struct rte_timer *tim);
443
469int
470rte_timer_alt_manage(uint32_t timer_data_id, unsigned int *poll_lcores,
471 int n_poll_lcores, rte_timer_alt_manage_cb_t f);
472
476typedef void (*rte_timer_stop_all_cb_t)(struct rte_timer *tim, void *arg);
477
498int
499rte_timer_stop_all(uint32_t timer_data_id, unsigned int *walk_lcores,
500 int nb_walk_lcores, rte_timer_stop_all_cb_t f, void *f_arg);
501
517int
518rte_timer_alt_dump_stats(uint32_t timer_data_id, FILE *f);
519
520#ifdef __cplusplus
521}
522#endif
523
524#endif /* _RTE_TIMER_H_ */
#define RTE_STD_C11
Definition: rte_common.h:42
int rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim)
void rte_timer_stop_sync(struct rte_timer *tim)
void rte_timer_subsystem_finalize(void)
int rte_timer_data_alloc(uint32_t *id_ptr)
int rte_timer_data_dealloc(uint32_t id)
int rte_timer_pending(struct rte_timer *tim)
rte_timer_type
Definition: rte_timer.h:58
void rte_timer_reset_sync(struct rte_timer *tim, uint64_t ticks, enum rte_timer_type type, unsigned tim_lcore, rte_timer_cb_t fct, void *arg)
void(* rte_timer_stop_all_cb_t)(struct rte_timer *tim, void *arg)
Definition: rte_timer.h:476
void rte_timer_init(struct rte_timer *tim)
int rte_timer_stop(struct rte_timer *tim)
int rte_timer_reset(struct rte_timer *tim, uint64_t ticks, enum rte_timer_type type, unsigned tim_lcore, rte_timer_cb_t fct, void *arg)
int rte_timer_alt_dump_stats(uint32_t timer_data_id, FILE *f)
__rte_experimental int64_t rte_timer_next_ticks(void)
int rte_timer_manage(void)
int rte_timer_alt_manage(uint32_t timer_data_id, unsigned int *poll_lcores, int n_poll_lcores, rte_timer_alt_manage_cb_t f)
int rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim, uint64_t ticks, enum rte_timer_type type, unsigned int tim_lcore, rte_timer_cb_t fct, void *arg)
void(* rte_timer_alt_manage_cb_t)(struct rte_timer *tim)
Definition: rte_timer.h:442
void(* rte_timer_cb_t)(struct rte_timer *, void *)
Definition: rte_timer.h:93
int rte_timer_dump_stats(FILE *f)
int rte_timer_subsystem_init(void)
int rte_timer_stop_all(uint32_t timer_data_id, unsigned int *walk_lcores, int nb_walk_lcores, rte_timer_stop_all_cb_t f, void *f_arg)
rte_timer_cb_t f
Definition: rte_timer.h:106
volatile union rte_timer_status status
Definition: rte_timer.h:104
uint64_t period
Definition: rte_timer.h:105
void * arg
Definition: rte_timer.h:107
uint64_t expire
Definition: rte_timer.h:102
int16_t owner
Definition: rte_timer.h:71
uint32_t u32
Definition: rte_timer.h:73
uint16_t state
Definition: rte_timer.h:70