intrte_power_monitor(conststructrte_power_monitor_cond*pmc,constuint64_ttsc_timestamp)
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()APIcall.Parameterspmc The monitoring condition structure.
tsc_timestamp Maximum TSC timestamp to wait for. Note that the wait behavior is architecture-
dependent.
Returns
0 on success -EINVAL on invalid parameters -ENOTSUP if unsupported
intrte_power_monitor_wakeup(constunsignedintlcore_id)
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.
Parameterslcore_id Lcore ID of a sleeping thread.
intrte_power_pause(constuint64_ttsc_timestamp)
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()APIcall.Parameterstsc_timestamp Maximum TSC timestamp to wait for. Note that the wait behavior is architecture-
dependent.
Returns
0 on success -EINVAL on invalid parameters -ENOTSUP if unsupported
intrte_power_monitor_multi(conststructrte_power_monitor_condpmc[],constuint32_tnum,constuint64_ttsc_timestamp)
Monitor a set of addresses for changes. This will cause the CPU to enter an architecture-defined
optimized power state until either one of the specified memory addresses is written to, a certain TSC
timestamp is reached, or other reasons cause the CPU to wake up.
Additionally, expected 64-bit values and 64-bit masks are provided. If mask is non-zero, the current
value pointed to by the p pointer will be checked against the expected value, and if they do not match,
the entering of optimized power state may be aborted.
Warning
It is responsibility of the user to check if this function is supported at runtime using
rte_cpu_get_intrinsics_support()APIcall.FailingtodosomayresultinanillegalCPUinstructionerror.Parameterspmc An array of monitoring condition structures.
num Length of the pmc array.
tsc_timestamp Maximum TSC timestamp to wait for. Note that the wait behavior is architecture-
dependent.
Returns
0 on success -EINVAL on invalid parameters -ENOTSUP if unsupported