DPDK  21.02.0
Functions
rte_power_intrinsics.h File Reference
#include <inttypes.h>
#include <rte_compat.h>
#include <rte_spinlock.h>

Go to the source code of this file.

Functions

__rte_experimental int rte_power_monitor (const struct rte_power_monitor_cond *pmc, const uint64_t tsc_timestamp)
 
__rte_experimental int rte_power_monitor_wakeup (const unsigned int lcore_id)
 
__rte_experimental int rte_power_pause (const uint64_t tsc_timestamp)
 

Detailed Description

Advanced power management operations.

This file define APIs for advanced power management, which are architecture-dependent.

Definition in file rte_power_intrinsics.h.

Function Documentation

__rte_experimental int rte_power_monitor ( const struct rte_power_monitor_cond *  pmc,
const uint64_t  tsc_timestamp 
)
Warning
EXPERIMENTAL: this API may change without prior notice.

Monitor specific address for changes. This will cause the CPU to enter an architecture-defined optimized power state until either the specified memory address is written to, a certain TSC timestamp is reached, or other reasons cause the CPU to wake up.

Additionally, an expected value (pmc->val), mask (pmc->mask), and data size (pmc->size) are provided in the pmc power monitoring condition. If the mask is non-zero, the current value pointed to by the pmc->addr pointer will be read and compared against the expected value, and if they match, the entering of optimized power state will be aborted. This is intended to prevent the CPU from entering optimized power state and waiting on a write that has already happened by the time this API is called.

Warning
It is responsibility of the user to check if this function is supported at runtime using rte_cpu_get_intrinsics_support() API call.
Parameters
pmcThe monitoring condition structure.
tsc_timestampMaximum TSC timestamp to wait for. Note that the wait behavior is architecture-dependent.
Returns
0 on success -EINVAL on invalid parameters -ENOTSUP if unsupported
__rte_experimental int rte_power_monitor_wakeup ( const unsigned int  lcore_id)
Warning
EXPERIMENTAL: this API may change without prior notice.

Wake up a specific lcore that is in a power optimized state and is monitoring an address.

Note
It is safe to call this function if the lcore in question is not sleeping. The function will have no effect.
This function will not wake up a core that is in a power optimized state due to calling rte_power_pause.
Parameters
lcore_idLcore ID of a sleeping thread.
__rte_experimental int rte_power_pause ( const uint64_t  tsc_timestamp)
Warning
EXPERIMENTAL: this API may change without prior notice.

Enter an architecture-defined optimized power state until a certain TSC timestamp is reached.

Warning
It is responsibility of the user to check if this function is supported at runtime using rte_cpu_get_intrinsics_support() API call.
Parameters
tsc_timestampMaximum TSC timestamp to wait for. Note that the wait behavior is architecture-dependent.
Returns
0 on success -EINVAL on invalid parameters -ENOTSUP if unsupported