DPDK  21.11.8
Data Structures | Typedefs | Functions | Variables
rte_power.h File Reference
#include <rte_common.h>
#include <rte_byteorder.h>
#include <rte_log.h>
#include <rte_string_fns.h>
#include <rte_power_guest_channel.h>

Go to the source code of this file.

Data Structures

struct  rte_power_core_capabilities
 

Typedefs

typedef uint32_t(* rte_power_freqs_t) (unsigned int lcore_id, uint32_t *freqs, uint32_t num)
 
typedef uint32_t(* rte_power_get_freq_t) (unsigned int lcore_id)
 
typedef int(* rte_power_set_freq_t) (unsigned int lcore_id, uint32_t index)
 
typedef int(* rte_power_freq_change_t) (unsigned int lcore_id)
 
typedef int(* rte_power_get_capabilities_t) (unsigned int lcore_id, struct rte_power_core_capabilities *caps)
 

Functions

__rte_experimental int rte_power_check_env_supported (enum power_management_env env)
 
int rte_power_set_env (enum power_management_env env)
 
void rte_power_unset_env (void)
 
enum power_management_env rte_power_get_env (void)
 
int rte_power_init (unsigned int lcore_id)
 
int rte_power_exit (unsigned int lcore_id)
 

Variables

rte_power_freq_change_t rte_power_freq_up
 
rte_power_freq_change_t rte_power_freq_down
 
rte_power_freq_change_t rte_power_freq_max
 
rte_power_freq_change_t rte_power_freq_min
 
rte_power_freq_change_t rte_power_turbo_status
 
rte_power_freq_change_t rte_power_freq_enable_turbo
 
rte_power_freq_change_t rte_power_freq_disable_turbo
 

Detailed Description

RTE Power Management

Definition in file rte_power.h.

Typedef Documentation

◆ rte_power_freqs_t

typedef uint32_t(* rte_power_freqs_t) (unsigned int lcore_id, uint32_t *freqs, uint32_t num)

Get the available frequencies of a specific lcore. Function pointer definition. Review each environments specific documentation for usage.

Parameters
lcore_idlcore id.
freqsThe buffer array to save the frequencies.
numThe number of frequencies to get.
Returns
The number of available frequencies.

Definition at line 116 of file rte_power.h.

◆ rte_power_get_freq_t

typedef uint32_t(* rte_power_get_freq_t) (unsigned int lcore_id)

Return the current index of available frequencies of a specific lcore. Function pointer definition. Review each environments specific documentation for usage.

Parameters
lcore_idlcore id.
Returns
The current index of available frequencies.

Definition at line 132 of file rte_power.h.

◆ rte_power_set_freq_t

typedef int(* rte_power_set_freq_t) (unsigned int lcore_id, uint32_t index)

Set the new frequency for a specific lcore by indicating the index of available frequencies. Function pointer definition. Review each environments specific documentation for usage.

Parameters
lcore_idlcore id.
indexThe index of available frequencies.
Returns
  • 1 on success with frequency changed.
  • 0 on success without frequency changed.
  • Negative on error.

Definition at line 152 of file rte_power.h.

◆ rte_power_freq_change_t

typedef int(* rte_power_freq_change_t) (unsigned int lcore_id)

Function pointer definition for generic frequency change functions. Review each environments specific documentation for usage.

Parameters
lcore_idlcore id.
Returns
  • 1 on success with frequency changed.
  • 0 on success without frequency changed.
  • Negative on error.

Definition at line 168 of file rte_power.h.

◆ rte_power_get_capabilities_t

typedef int(* rte_power_get_capabilities_t) (unsigned int lcore_id, struct rte_power_core_capabilities *caps)

Returns power capabilities for a specific lcore. Function pointer definition. Review each environments specific documentation for usage.

Parameters
lcore_idlcore id.
capspointer to rte_power_core_capabilities object.
Returns
  • 0 on success.
  • Negative on error.

Definition at line 245 of file rte_power.h.

Function Documentation

◆ rte_power_check_env_supported()

__rte_experimental int rte_power_check_env_supported ( enum power_management_env  env)
Warning
EXPERIMENTAL: this API may change, or be removed, without prior notice

Check if a specific power management environment type is supported on a currently running system.

Parameters
envThe environment type to check support for.
Returns
  • 1 if supported
  • 0 if unsupported
  • -1 if error, with rte_errno indicating reason for error.
Examples:
examples/l3fwd-power/main.c.

◆ rte_power_set_env()

int rte_power_set_env ( enum power_management_env  env)

Set the default power management implementation. If this is not called prior to rte_power_init(), then auto-detect of the environment will take place. It is thread safe. New env can be set only in uninitialized state (thus rte_power_unset_env must be called if different env was already set).

Parameters
envenv. The environment in which to initialise Power Management for.
Returns
  • 0 on success.
  • Negative on error.
Examples:
examples/vm_power_manager/guest_cli/main.c, and examples/vm_power_manager/power_manager.c.

◆ rte_power_unset_env()

void rte_power_unset_env ( void  )

Unset the global environment configuration. This can only be called after all threads have completed.

◆ rte_power_get_env()

enum power_management_env rte_power_get_env ( void  )

Get the default power management implementation.

Returns
power_management_env The configured environment.
Examples:
examples/l3fwd-power/main.c, and examples/l3fwd-power/perf_core.c.

◆ rte_power_init()

int rte_power_init ( unsigned int  lcore_id)

Initialize power management for a specific lcore. If rte_power_set_env() has not been called then an auto-detect of the environment will start and initialise the corresponding resources.

Parameters
lcore_idlcore id.
Returns
  • 0 on success.
  • Negative on error.
Examples:
examples/distributor/main.c, examples/l3fwd-power/main.c, examples/vm_power_manager/guest_cli/main.c, and examples/vm_power_manager/power_manager.c.

◆ rte_power_exit()

int rte_power_exit ( unsigned int  lcore_id)

Exit power management on a specific lcore. This will call the environment dependent exit function.

Parameters
lcore_idlcore id.
Returns
  • 0 on success.
  • Negative on error.
Examples:
examples/distributor/main.c, examples/l3fwd-power/main.c, examples/vm_power_manager/guest_cli/main.c, examples/vm_power_manager/guest_cli/vm_power_cli_guest.c, and examples/vm_power_manager/power_manager.c.

Variable Documentation

◆ rte_power_freq_up

rte_power_freq_change_t rte_power_freq_up

Scale up the frequency of a specific lcore according to the available frequencies. Review each environments specific documentation for usage.

Examples:
examples/l3fwd-power/main.c, and examples/vm_power_manager/guest_cli/vm_power_cli_guest.c.

◆ rte_power_freq_down

rte_power_freq_change_t rte_power_freq_down

Scale down the frequency of a specific lcore according to the available frequencies. Review each environments specific documentation for usage.

Examples:
examples/l3fwd-power/main.c, and examples/vm_power_manager/guest_cli/vm_power_cli_guest.c.

◆ rte_power_freq_max

rte_power_freq_change_t rte_power_freq_max

Scale up the frequency of a specific lcore to the highest according to the available frequencies. Review each environments specific documentation for usage.

Examples:
examples/l3fwd-power/main.c, and examples/vm_power_manager/guest_cli/vm_power_cli_guest.c.

◆ rte_power_freq_min

rte_power_freq_change_t rte_power_freq_min

Scale down the frequency of a specific lcore to the lowest according to the available frequencies. Review each environments specific documentation for usage..

Examples:
examples/vm_power_manager/guest_cli/vm_power_cli_guest.c.

◆ rte_power_turbo_status

rte_power_freq_change_t rte_power_turbo_status

Query the Turbo Boost status of a specific lcore. Review each environments specific documentation for usage..

◆ rte_power_freq_enable_turbo

rte_power_freq_change_t rte_power_freq_enable_turbo

Enable Turbo Boost for this lcore. Review each environments specific documentation for usage..

Examples:
examples/vm_power_manager/guest_cli/vm_power_cli_guest.c.

◆ rte_power_freq_disable_turbo

rte_power_freq_change_t rte_power_freq_disable_turbo

Disable Turbo Boost for this lcore. Review each environments specific documentation for usage..

Examples:
examples/vm_power_manager/guest_cli/vm_power_cli_guest.c.