blob: 7e4d0b240756501220a3084ae273366e4f9be0e7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2010-2014 Intel Corporation
*/
#ifndef _RTE_ALARM_H_
#define _RTE_ALARM_H_
/**
* @file
*
* Alarm functions
*
* Simple alarm-clock functionality supplied by eal.
* Does not require hpet support.
*/
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
/**
* Signature of callback back function called when an alarm goes off.
*/
typedef void (*rte_eal_alarm_callback)(void *arg);
/**
* Function to set a callback to be triggered when us microseconds
* have expired. Accuracy of timing to the microsecond is not guaranteed. The
* alarm function will not be called *before* the requested time, but may
* be called a short period of time afterwards.
* The alarm handler will be called only once. There is no need to call
* "rte_eal_alarm_cancel" from within the callback function.
*
* @param us
* The time in microseconds before the callback is called
* @param cb
* The function to be called when the alarm expires
* @param cb_arg
* Pointer parameter to be passed to the callback function
*
* @return
* On success, zero.
* On failure, a negative error number
*/
int rte_eal_alarm_set(uint64_t us, rte_eal_alarm_callback cb, void *cb_arg);
/**
* Function to cancel an alarm callback which has been registered before. If
* used outside alarm callback it wait for all callbacks to finish execution.
*
* @param cb_fn
* alarm callback
* @param cb_arg
* Pointer parameter to be passed to the callback function. To remove all
* copies of a given callback function, irrespective of parameter, (void *)-1
* can be used here.
*
* @return
* - value greater than 0 and rte_errno not changed - returned value is
* the number of canceled alarm callback functions
* - value greater or equal 0 and rte_errno set to EINPROGRESS, at least one
* alarm could not be canceled because cancellation was requested from alarm
* callback context. Returned value is the number of successfully canceled
* alarm callbacks
* - 0 and rte_errno set to ENOENT - no alarm found
* - -1 and rte_errno set to EINVAL - invalid parameter (NULL callback)
*/
int rte_eal_alarm_cancel(rte_eal_alarm_callback cb_fn, void *cb_arg);
#ifdef __cplusplus
}
#endif
#endif /* _RTE_ALARM_H_ */
|