* [dpdk-dev] [PATCH 0/3] rte_power enhancement @ 2019-04-05 16:22 Hajkowski 2019-04-05 16:22 ` Hajkowski ` (4 more replies) 0 siblings, 5 replies; 10+ messages in thread From: Hajkowski @ 2019-04-05 16:22 UTC (permalink / raw) To: david.hunt; +Cc: dev, Marcin Hajkowski From: Marcin Hajkowski <marcinx.hajkowski@intel.com> Enhance rte_power API user notification by returning more suitable value in case of power environment setting, add related tests and some internal data cleaning corrections. Please note that changes depends on patch (http://patchwork.dpdk.org/patch/52349/) which should be applied at first place. Marcin Hajkowski (3): power: return error in set env when power env already set power: reset function pointers on unset env power: add UTs for all power env types app/test/test_power.c | 156 +++++++++++++++++++++++++++-------- lib/librte_power/rte_power.c | 24 +++++- lib/librte_power/rte_power.h | 3 +- 3 files changed, 145 insertions(+), 38 deletions(-) -- 2.17.2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [dpdk-dev] [PATCH 0/3] rte_power enhancement 2019-04-05 16:22 [dpdk-dev] [PATCH 0/3] rte_power enhancement Hajkowski @ 2019-04-05 16:22 ` Hajkowski 2019-04-05 16:22 ` [dpdk-dev] [PATCH 1/3] power: return error in set env when power env already set Hajkowski ` (3 subsequent siblings) 4 siblings, 0 replies; 10+ messages in thread From: Hajkowski @ 2019-04-05 16:22 UTC (permalink / raw) To: david.hunt; +Cc: dev, Marcin Hajkowski From: Marcin Hajkowski <marcinx.hajkowski@intel.com> Enhance rte_power API user notification by returning more suitable value in case of power environment setting, add related tests and some internal data cleaning corrections. Please note that changes depends on patch (http://patchwork.dpdk.org/patch/52349/) which should be applied at first place. Marcin Hajkowski (3): power: return error in set env when power env already set power: reset function pointers on unset env power: add UTs for all power env types app/test/test_power.c | 156 +++++++++++++++++++++++++++-------- lib/librte_power/rte_power.c | 24 +++++- lib/librte_power/rte_power.h | 3 +- 3 files changed, 145 insertions(+), 38 deletions(-) -- 2.17.2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [dpdk-dev] [PATCH 1/3] power: return error in set env when power env already set 2019-04-05 16:22 [dpdk-dev] [PATCH 0/3] rte_power enhancement Hajkowski 2019-04-05 16:22 ` Hajkowski @ 2019-04-05 16:22 ` Hajkowski 2019-04-05 16:22 ` Hajkowski 2019-04-05 16:22 ` [dpdk-dev] [PATCH 2/3] power: reset function pointers on unset env Hajkowski ` (2 subsequent siblings) 4 siblings, 1 reply; 10+ messages in thread From: Hajkowski @ 2019-04-05 16:22 UTC (permalink / raw) To: david.hunt; +Cc: dev, Marcin Hajkowski, Anatoly Burakov From: Marcin Hajkowski <marcinx.hajkowski@intel.com> On attempt to set_env in already initialized state notify user by returning error that operation cannot be performed. Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com> --- lib/librte_power/rte_power.c | 3 ++- lib/librte_power/rte_power.h | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/librte_power/rte_power.c b/lib/librte_power/rte_power.c index 540d69be7..ed701087d 100644 --- a/lib/librte_power/rte_power.c +++ b/lib/librte_power/rte_power.c @@ -33,8 +33,9 @@ rte_power_set_env(enum power_management_env env) rte_spinlock_lock(&global_env_cfg_lock); if (global_default_env != PM_ENV_NOT_SET) { + RTE_LOG(ERR, POWER, "Power Management Environment already set.\n"); rte_spinlock_unlock(&global_env_cfg_lock); - return 0; + return -1; } int ret = 0; diff --git a/lib/librte_power/rte_power.h b/lib/librte_power/rte_power.h index 47db69f33..0650112ad 100644 --- a/lib/librte_power/rte_power.h +++ b/lib/librte_power/rte_power.h @@ -26,7 +26,8 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM, /** * 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. + * It is thread safe. New env can be set only in unitialized state + * (thus rte_power_unset_env must be called if different env was already set). * * @param env * env. The environment in which to initialise Power Management for. -- 2.17.2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [dpdk-dev] [PATCH 1/3] power: return error in set env when power env already set 2019-04-05 16:22 ` [dpdk-dev] [PATCH 1/3] power: return error in set env when power env already set Hajkowski @ 2019-04-05 16:22 ` Hajkowski 0 siblings, 0 replies; 10+ messages in thread From: Hajkowski @ 2019-04-05 16:22 UTC (permalink / raw) To: david.hunt; +Cc: dev, Marcin Hajkowski, Anatoly Burakov From: Marcin Hajkowski <marcinx.hajkowski@intel.com> On attempt to set_env in already initialized state notify user by returning error that operation cannot be performed. Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com> --- lib/librte_power/rte_power.c | 3 ++- lib/librte_power/rte_power.h | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/librte_power/rte_power.c b/lib/librte_power/rte_power.c index 540d69be7..ed701087d 100644 --- a/lib/librte_power/rte_power.c +++ b/lib/librte_power/rte_power.c @@ -33,8 +33,9 @@ rte_power_set_env(enum power_management_env env) rte_spinlock_lock(&global_env_cfg_lock); if (global_default_env != PM_ENV_NOT_SET) { + RTE_LOG(ERR, POWER, "Power Management Environment already set.\n"); rte_spinlock_unlock(&global_env_cfg_lock); - return 0; + return -1; } int ret = 0; diff --git a/lib/librte_power/rte_power.h b/lib/librte_power/rte_power.h index 47db69f33..0650112ad 100644 --- a/lib/librte_power/rte_power.h +++ b/lib/librte_power/rte_power.h @@ -26,7 +26,8 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM, /** * 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. + * It is thread safe. New env can be set only in unitialized state + * (thus rte_power_unset_env must be called if different env was already set). * * @param env * env. The environment in which to initialise Power Management for. -- 2.17.2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [dpdk-dev] [PATCH 2/3] power: reset function pointers on unset env 2019-04-05 16:22 [dpdk-dev] [PATCH 0/3] rte_power enhancement Hajkowski 2019-04-05 16:22 ` Hajkowski 2019-04-05 16:22 ` [dpdk-dev] [PATCH 1/3] power: return error in set env when power env already set Hajkowski @ 2019-04-05 16:22 ` Hajkowski 2019-04-05 16:22 ` Hajkowski 2019-04-05 16:22 ` [dpdk-dev] [PATCH 3/3] power: add UTs for all power env types Hajkowski 2019-04-22 20:34 ` [dpdk-dev] [PATCH 0/3] rte_power enhancement Thomas Monjalon 4 siblings, 1 reply; 10+ messages in thread From: Hajkowski @ 2019-04-05 16:22 UTC (permalink / raw) To: david.hunt; +Cc: dev, Marcin Hajkowski, Anatoly Burakov From: Marcin Hajkowski <marcinx.hajkowski@intel.com> Set all power environment related function pointers to NULL when unset is being made. Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com> --- lib/librte_power/rte_power.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/librte_power/rte_power.c b/lib/librte_power/rte_power.c index ed701087d..6b7722727 100644 --- a/lib/librte_power/rte_power.c +++ b/lib/librte_power/rte_power.c @@ -27,6 +27,22 @@ rte_power_freq_change_t rte_power_freq_enable_turbo; rte_power_freq_change_t rte_power_freq_disable_turbo; rte_power_get_capabilities_t rte_power_get_capabilities; +static void +reset_power_function_ptrs(void) +{ + rte_power_freqs = NULL; + rte_power_get_freq = NULL; + rte_power_set_freq = NULL; + rte_power_freq_up = NULL; + rte_power_freq_down = NULL; + rte_power_freq_max = NULL; + rte_power_freq_min = NULL; + rte_power_turbo_status = NULL; + rte_power_freq_enable_turbo = NULL; + rte_power_freq_disable_turbo = NULL; + rte_power_get_capabilities = NULL; +} + int rte_power_set_env(enum power_management_env env) { @@ -85,8 +101,10 @@ rte_power_set_env(enum power_management_env env) if (ret == 0) global_default_env = env; - else + else { global_default_env = PM_ENV_NOT_SET; + reset_power_function_ptrs(); + } rte_spinlock_unlock(&global_env_cfg_lock); return ret; @@ -97,6 +115,7 @@ rte_power_unset_env(void) { rte_spinlock_lock(&global_env_cfg_lock); global_default_env = PM_ENV_NOT_SET; + reset_power_function_ptrs(); rte_spinlock_unlock(&global_env_cfg_lock); } -- 2.17.2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [dpdk-dev] [PATCH 2/3] power: reset function pointers on unset env 2019-04-05 16:22 ` [dpdk-dev] [PATCH 2/3] power: reset function pointers on unset env Hajkowski @ 2019-04-05 16:22 ` Hajkowski 0 siblings, 0 replies; 10+ messages in thread From: Hajkowski @ 2019-04-05 16:22 UTC (permalink / raw) To: david.hunt; +Cc: dev, Marcin Hajkowski, Anatoly Burakov From: Marcin Hajkowski <marcinx.hajkowski@intel.com> Set all power environment related function pointers to NULL when unset is being made. Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com> --- lib/librte_power/rte_power.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/librte_power/rte_power.c b/lib/librte_power/rte_power.c index ed701087d..6b7722727 100644 --- a/lib/librte_power/rte_power.c +++ b/lib/librte_power/rte_power.c @@ -27,6 +27,22 @@ rte_power_freq_change_t rte_power_freq_enable_turbo; rte_power_freq_change_t rte_power_freq_disable_turbo; rte_power_get_capabilities_t rte_power_get_capabilities; +static void +reset_power_function_ptrs(void) +{ + rte_power_freqs = NULL; + rte_power_get_freq = NULL; + rte_power_set_freq = NULL; + rte_power_freq_up = NULL; + rte_power_freq_down = NULL; + rte_power_freq_max = NULL; + rte_power_freq_min = NULL; + rte_power_turbo_status = NULL; + rte_power_freq_enable_turbo = NULL; + rte_power_freq_disable_turbo = NULL; + rte_power_get_capabilities = NULL; +} + int rte_power_set_env(enum power_management_env env) { @@ -85,8 +101,10 @@ rte_power_set_env(enum power_management_env env) if (ret == 0) global_default_env = env; - else + else { global_default_env = PM_ENV_NOT_SET; + reset_power_function_ptrs(); + } rte_spinlock_unlock(&global_env_cfg_lock); return ret; @@ -97,6 +115,7 @@ rte_power_unset_env(void) { rte_spinlock_lock(&global_env_cfg_lock); global_default_env = PM_ENV_NOT_SET; + reset_power_function_ptrs(); rte_spinlock_unlock(&global_env_cfg_lock); } -- 2.17.2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [dpdk-dev] [PATCH 3/3] power: add UTs for all power env types 2019-04-05 16:22 [dpdk-dev] [PATCH 0/3] rte_power enhancement Hajkowski ` (2 preceding siblings ...) 2019-04-05 16:22 ` [dpdk-dev] [PATCH 2/3] power: reset function pointers on unset env Hajkowski @ 2019-04-05 16:22 ` Hajkowski 2019-04-05 16:22 ` Hajkowski 2019-04-22 20:34 ` [dpdk-dev] [PATCH 0/3] rte_power enhancement Thomas Monjalon 4 siblings, 1 reply; 10+ messages in thread From: Hajkowski @ 2019-04-05 16:22 UTC (permalink / raw) To: david.hunt; +Cc: dev, Marcin Hajkowski, Anatoly Burakov From: Marcin Hajkowski <marcinx.hajkowski@intel.com> Test all existing power environment configuration to verify if related data is properly initialized and clean in set/unset scenarios. Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com> --- app/test/test_power.c | 156 ++++++++++++++++++++++++++++++++---------- 1 file changed, 121 insertions(+), 35 deletions(-) diff --git a/app/test/test_power.c b/app/test/test_power.c index a0ee21983..0ff2aa0d1 100644 --- a/app/test/test_power.c +++ b/app/test/test_power.c @@ -7,6 +7,7 @@ #include <unistd.h> #include <limits.h> #include <string.h> +#include <stdbool.h> #include "test.h" @@ -23,6 +24,86 @@ test_power(void) #include <rte_power.h> +static int +check_function_ptrs(void) +{ + enum power_management_env env = rte_power_get_env(); + + const bool not_null_expected = !(env == PM_ENV_NOT_SET); + + const char *inject_not_string1 = not_null_expected ? " not" : ""; + const char *inject_not_string2 = not_null_expected ? "" : " not"; + + if ((rte_power_freqs == NULL) == not_null_expected) { + printf("rte_power_freqs should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_get_freq == NULL) == not_null_expected) { + printf("rte_power_get_freq should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_set_freq == NULL) == not_null_expected) { + printf("rte_power_set_freq should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_freq_up == NULL) == not_null_expected) { + printf("rte_power_freq_up should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_freq_down == NULL) == not_null_expected) { + printf("rte_power_freq_down should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_freq_max == NULL) == not_null_expected) { + printf("rte_power_freq_max should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_freq_min == NULL) == not_null_expected) { + printf("rte_power_freq_min should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_turbo_status == NULL) == not_null_expected) { + printf("rte_power_turbo_status should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_freq_enable_turbo == NULL) == not_null_expected) { + printf("rte_power_freq_enable_turbo should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_freq_disable_turbo == NULL) == not_null_expected) { + printf("rte_power_freq_disable_turbo should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_get_capabilities == NULL) == not_null_expected) { + printf("rte_power_get_capabilities should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + + return 0; +} + static int test_power(void) { @@ -43,43 +124,48 @@ test_power(void) return -1; } - /* verify that function pointers are NULL */ - if (rte_power_freqs != NULL) { - printf("rte_power_freqs should be NULL, environment has not been " - "initialised\n"); - goto fail_all; - } - if (rte_power_get_freq != NULL) { - printf("rte_power_get_freq should be NULL, environment has not been " - "initialised\n"); - goto fail_all; - } - if (rte_power_set_freq != NULL) { - printf("rte_power_set_freq should be NULL, environment has not been " - "initialised\n"); - goto fail_all; - } - if (rte_power_freq_up != NULL) { - printf("rte_power_freq_up should be NULL, environment has not been " - "initialised\n"); - goto fail_all; - } - if (rte_power_freq_down != NULL) { - printf("rte_power_freq_down should be NULL, environment has not been " - "initialised\n"); - goto fail_all; - } - if (rte_power_freq_max != NULL) { - printf("rte_power_freq_max should be NULL, environment has not been " - "initialised\n"); - goto fail_all; - } - if (rte_power_freq_min != NULL) { - printf("rte_power_freq_min should be NULL, environment has not been " - "initialised\n"); + /* Verify that function pointers are NULL */ + if (check_function_ptrs() < 0) goto fail_all; - } + rte_power_unset_env(); + + /* Perform tests for valid environments.*/ + const enum power_management_env envs[] = {PM_ENV_ACPI_CPUFREQ, + PM_ENV_KVM_VM, + PM_ENV_PSTATE_CPUFREQ}; + + const int envs_size = sizeof(envs)/sizeof(enum power_management_env); + + int i; + for (i = 0; i < envs_size; ++i) { + + /* Test setting a valid environment */ + ret = rte_power_set_env(envs[i]); + if (ret != 0) { + printf("Unexpectedly unsucceeded on setting a valid environment\n"); + return -1; + } + + /* Test that the environment has been set */ + env = rte_power_get_env(); + if (env != envs[i]) { + printf("Not expected environment configuration\n"); + return -1; + } + + /* Verify that function pointers are NOT NULL */ + if (check_function_ptrs() < 0) + goto fail_all; + + rte_power_unset_env(); + + /* Verify that function pointers are NULL */ + if (check_function_ptrs() < 0) + goto fail_all; + + } + return 0; fail_all: rte_power_unset_env(); -- 2.17.2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [dpdk-dev] [PATCH 3/3] power: add UTs for all power env types 2019-04-05 16:22 ` [dpdk-dev] [PATCH 3/3] power: add UTs for all power env types Hajkowski @ 2019-04-05 16:22 ` Hajkowski 0 siblings, 0 replies; 10+ messages in thread From: Hajkowski @ 2019-04-05 16:22 UTC (permalink / raw) To: david.hunt; +Cc: dev, Marcin Hajkowski, Anatoly Burakov From: Marcin Hajkowski <marcinx.hajkowski@intel.com> Test all existing power environment configuration to verify if related data is properly initialized and clean in set/unset scenarios. Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com> --- app/test/test_power.c | 156 ++++++++++++++++++++++++++++++++---------- 1 file changed, 121 insertions(+), 35 deletions(-) diff --git a/app/test/test_power.c b/app/test/test_power.c index a0ee21983..0ff2aa0d1 100644 --- a/app/test/test_power.c +++ b/app/test/test_power.c @@ -7,6 +7,7 @@ #include <unistd.h> #include <limits.h> #include <string.h> +#include <stdbool.h> #include "test.h" @@ -23,6 +24,86 @@ test_power(void) #include <rte_power.h> +static int +check_function_ptrs(void) +{ + enum power_management_env env = rte_power_get_env(); + + const bool not_null_expected = !(env == PM_ENV_NOT_SET); + + const char *inject_not_string1 = not_null_expected ? " not" : ""; + const char *inject_not_string2 = not_null_expected ? "" : " not"; + + if ((rte_power_freqs == NULL) == not_null_expected) { + printf("rte_power_freqs should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_get_freq == NULL) == not_null_expected) { + printf("rte_power_get_freq should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_set_freq == NULL) == not_null_expected) { + printf("rte_power_set_freq should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_freq_up == NULL) == not_null_expected) { + printf("rte_power_freq_up should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_freq_down == NULL) == not_null_expected) { + printf("rte_power_freq_down should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_freq_max == NULL) == not_null_expected) { + printf("rte_power_freq_max should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_freq_min == NULL) == not_null_expected) { + printf("rte_power_freq_min should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_turbo_status == NULL) == not_null_expected) { + printf("rte_power_turbo_status should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_freq_enable_turbo == NULL) == not_null_expected) { + printf("rte_power_freq_enable_turbo should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_freq_disable_turbo == NULL) == not_null_expected) { + printf("rte_power_freq_disable_turbo should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + if ((rte_power_get_capabilities == NULL) == not_null_expected) { + printf("rte_power_get_capabilities should%s be NULL, environment has%s been " + "initialised\n", inject_not_string1, + inject_not_string2); + return -1; + } + + return 0; +} + static int test_power(void) { @@ -43,43 +124,48 @@ test_power(void) return -1; } - /* verify that function pointers are NULL */ - if (rte_power_freqs != NULL) { - printf("rte_power_freqs should be NULL, environment has not been " - "initialised\n"); - goto fail_all; - } - if (rte_power_get_freq != NULL) { - printf("rte_power_get_freq should be NULL, environment has not been " - "initialised\n"); - goto fail_all; - } - if (rte_power_set_freq != NULL) { - printf("rte_power_set_freq should be NULL, environment has not been " - "initialised\n"); - goto fail_all; - } - if (rte_power_freq_up != NULL) { - printf("rte_power_freq_up should be NULL, environment has not been " - "initialised\n"); - goto fail_all; - } - if (rte_power_freq_down != NULL) { - printf("rte_power_freq_down should be NULL, environment has not been " - "initialised\n"); - goto fail_all; - } - if (rte_power_freq_max != NULL) { - printf("rte_power_freq_max should be NULL, environment has not been " - "initialised\n"); - goto fail_all; - } - if (rte_power_freq_min != NULL) { - printf("rte_power_freq_min should be NULL, environment has not been " - "initialised\n"); + /* Verify that function pointers are NULL */ + if (check_function_ptrs() < 0) goto fail_all; - } + rte_power_unset_env(); + + /* Perform tests for valid environments.*/ + const enum power_management_env envs[] = {PM_ENV_ACPI_CPUFREQ, + PM_ENV_KVM_VM, + PM_ENV_PSTATE_CPUFREQ}; + + const int envs_size = sizeof(envs)/sizeof(enum power_management_env); + + int i; + for (i = 0; i < envs_size; ++i) { + + /* Test setting a valid environment */ + ret = rte_power_set_env(envs[i]); + if (ret != 0) { + printf("Unexpectedly unsucceeded on setting a valid environment\n"); + return -1; + } + + /* Test that the environment has been set */ + env = rte_power_get_env(); + if (env != envs[i]) { + printf("Not expected environment configuration\n"); + return -1; + } + + /* Verify that function pointers are NOT NULL */ + if (check_function_ptrs() < 0) + goto fail_all; + + rte_power_unset_env(); + + /* Verify that function pointers are NULL */ + if (check_function_ptrs() < 0) + goto fail_all; + + } + return 0; fail_all: rte_power_unset_env(); -- 2.17.2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [dpdk-dev] [PATCH 0/3] rte_power enhancement 2019-04-05 16:22 [dpdk-dev] [PATCH 0/3] rte_power enhancement Hajkowski ` (3 preceding siblings ...) 2019-04-05 16:22 ` [dpdk-dev] [PATCH 3/3] power: add UTs for all power env types Hajkowski @ 2019-04-22 20:34 ` Thomas Monjalon 2019-04-22 20:34 ` Thomas Monjalon 4 siblings, 1 reply; 10+ messages in thread From: Thomas Monjalon @ 2019-04-22 20:34 UTC (permalink / raw) To: Hajkowski; +Cc: dev, david.hunt > Marcin Hajkowski (3): > power: return error in set env when power env already set > power: reset function pointers on unset env > power: add UTs for all power env types Applied, thanks ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [dpdk-dev] [PATCH 0/3] rte_power enhancement 2019-04-22 20:34 ` [dpdk-dev] [PATCH 0/3] rte_power enhancement Thomas Monjalon @ 2019-04-22 20:34 ` Thomas Monjalon 0 siblings, 0 replies; 10+ messages in thread From: Thomas Monjalon @ 2019-04-22 20:34 UTC (permalink / raw) To: Hajkowski; +Cc: dev, david.hunt > Marcin Hajkowski (3): > power: return error in set env when power env already set > power: reset function pointers on unset env > power: add UTs for all power env types Applied, thanks ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2019-04-22 20:34 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-04-05 16:22 [dpdk-dev] [PATCH 0/3] rte_power enhancement Hajkowski 2019-04-05 16:22 ` Hajkowski 2019-04-05 16:22 ` [dpdk-dev] [PATCH 1/3] power: return error in set env when power env already set Hajkowski 2019-04-05 16:22 ` Hajkowski 2019-04-05 16:22 ` [dpdk-dev] [PATCH 2/3] power: reset function pointers on unset env Hajkowski 2019-04-05 16:22 ` Hajkowski 2019-04-05 16:22 ` [dpdk-dev] [PATCH 3/3] power: add UTs for all power env types Hajkowski 2019-04-05 16:22 ` Hajkowski 2019-04-22 20:34 ` [dpdk-dev] [PATCH 0/3] rte_power enhancement Thomas Monjalon 2019-04-22 20:34 ` Thomas Monjalon
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).