* 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_features()` API call.
- * Failing to do so may result in an illegal CPU instruction error.
+ * supported at runtime using `rte_cpu_get_intrinsics_support()` API call.
*
* @param p
* Address to monitor for changes.
* Data size (in bytes) that will be used to compare expected value with the
* memory address. Can be 1, 2, 4 or 8. Supplying any other value will lead
* to undefined result.
+ *
+ * @return
+ * 0 on success
+ * -EINVAL on invalid parameters
+ * -ENOTSUP if unsupported
*/
__rte_experimental
-static inline void rte_power_monitor(const volatile void *p,
+int rte_power_monitor(const volatile void *p,
const uint64_t expected_value, const uint64_t value_mask,
const uint64_t tsc_timestamp, const uint8_t data_sz);
* waking up the CPU.
*
* @warning It is responsibility of the user to check if this function is
- * supported at runtime using `rte_cpu_get_features()` API call.
- * Failing to do so may result in an illegal CPU instruction error.
+ * supported at runtime using `rte_cpu_get_intrinsics_support()` API call.
*
* @param p
* Address to monitor for changes.
* A spinlock that must be locked before entering the function, will be
* unlocked while the CPU is sleeping, and will be locked again once the CPU
* wakes up.
+ *
+ * @return
+ * 0 on success
+ * -EINVAL on invalid parameters
+ * -ENOTSUP if unsupported
*/
__rte_experimental
-static inline void rte_power_monitor_sync(const volatile void *p,
+int rte_power_monitor_sync(const volatile void *p,
const uint64_t expected_value, const uint64_t value_mask,
const uint64_t tsc_timestamp, const uint8_t data_sz,
rte_spinlock_t *lck);
* timestamp is reached.
*
* @warning It is responsibility of the user to check if this function is
- * supported at runtime using `rte_cpu_get_features()` API call.
- * Failing to do so may result in an illegal CPU instruction error.
+ * supported at runtime using `rte_cpu_get_intrinsics_support()` API call.
*
* @param tsc_timestamp
* Maximum TSC timestamp to wait for. Note that the wait behavior is
* architecture-dependent.
+ *
+ * @return
+ * 0 on success
+ * -EINVAL on invalid parameters
+ * -ENOTSUP if unsupported
*/
__rte_experimental
-static inline void rte_power_pause(const uint64_t tsc_timestamp);
+int rte_power_pause(const uint64_t tsc_timestamp);
#endif /* _RTE_POWER_INTRINSIC_H_ */