Thomas Monjalon 9c1e0dc39a eal: move common header files
The EAL API (with doxygen documentation) is moved from
common/include/ to include/, which makes more clear that
it is the global API for all environments and architectures.

Note that the arch-specific and OS-specific include files are not
in this global include directory, but include/generic/ should
cover the doxygen documentation for them.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: David Marchand <david.marchand@redhat.com>
2020-03-31 13:08:55 +02:00

78 lines
2.3 KiB
C

/* 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_ */