bpf: allow self-xor operation
[dpdk.git] / app / test / test_power.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2014 Intel Corporation
3  */
4
5 #include <stdio.h>
6 #include <stdint.h>
7 #include <unistd.h>
8 #include <limits.h>
9 #include <string.h>
10 #include <stdbool.h>
11
12 #include "test.h"
13
14 #ifndef RTE_LIB_POWER
15
16 static int
17 test_power(void)
18 {
19         printf("Power management library not supported, skipping test\n");
20         return TEST_SKIPPED;
21 }
22
23 #else
24
25 #include <rte_power.h>
26
27 static int
28 check_function_ptrs(void)
29 {
30         enum power_management_env env = rte_power_get_env();
31
32         const bool not_null_expected = !(env == PM_ENV_NOT_SET);
33
34         const char *inject_not_string1 = not_null_expected ? " not" : "";
35         const char *inject_not_string2 = not_null_expected ? "" : " not";
36
37         if ((rte_power_freqs == NULL) == not_null_expected) {
38                 printf("rte_power_freqs should%s be NULL, environment has%s been "
39                                 "initialised\n", inject_not_string1,
40                                         inject_not_string2);
41                 return -1;
42         }
43         if ((rte_power_get_freq == NULL) == not_null_expected) {
44                 printf("rte_power_get_freq should%s be NULL, environment has%s been "
45                                 "initialised\n", inject_not_string1,
46                                         inject_not_string2);
47                 return -1;
48         }
49         if ((rte_power_set_freq == NULL) == not_null_expected) {
50                 printf("rte_power_set_freq should%s be NULL, environment has%s been "
51                                 "initialised\n", inject_not_string1,
52                                 inject_not_string2);
53                 return -1;
54         }
55         if ((rte_power_freq_up == NULL) == not_null_expected) {
56                 printf("rte_power_freq_up should%s be NULL, environment has%s been "
57                                 "initialised\n", inject_not_string1,
58                                 inject_not_string2);
59                 return -1;
60         }
61         if ((rte_power_freq_down == NULL) == not_null_expected) {
62                 printf("rte_power_freq_down should%s be NULL, environment has%s been "
63                                 "initialised\n", inject_not_string1,
64                                 inject_not_string2);
65                 return -1;
66         }
67         if ((rte_power_freq_max == NULL) == not_null_expected) {
68                 printf("rte_power_freq_max should%s be NULL, environment has%s been "
69                                 "initialised\n", inject_not_string1,
70                                 inject_not_string2);
71                 return -1;
72         }
73         if ((rte_power_freq_min == NULL) == not_null_expected) {
74                 printf("rte_power_freq_min should%s be NULL, environment has%s been "
75                                 "initialised\n", inject_not_string1,
76                                 inject_not_string2);
77                 return -1;
78         }
79         if ((rte_power_turbo_status == NULL) == not_null_expected) {
80                 printf("rte_power_turbo_status should%s be NULL, environment has%s been "
81                                 "initialised\n", inject_not_string1,
82                                 inject_not_string2);
83                 return -1;
84         }
85         if ((rte_power_freq_enable_turbo == NULL) == not_null_expected) {
86                 printf("rte_power_freq_enable_turbo should%s be NULL, environment has%s been "
87                                 "initialised\n", inject_not_string1,
88                                 inject_not_string2);
89                 return -1;
90         }
91         if ((rte_power_freq_disable_turbo == NULL) == not_null_expected) {
92                 printf("rte_power_freq_disable_turbo should%s be NULL, environment has%s been "
93                                 "initialised\n", inject_not_string1,
94                                 inject_not_string2);
95                 return -1;
96         }
97         if ((rte_power_get_capabilities == NULL) == not_null_expected) {
98                 printf("rte_power_get_capabilities should%s be NULL, environment has%s been "
99                                 "initialised\n", inject_not_string1,
100                                 inject_not_string2);
101                 return -1;
102         }
103
104         return 0;
105 }
106
107 static int
108 test_power(void)
109 {
110         int ret = -1;
111         enum power_management_env env;
112
113         /* Test setting an invalid environment */
114         ret = rte_power_set_env(PM_ENV_NOT_SET);
115         if (ret == 0) {
116                 printf("Unexpectedly succeeded on setting an invalid environment\n");
117                 return -1;
118         }
119
120         /* Test that the environment has not been set */
121         env = rte_power_get_env();
122         if (env != PM_ENV_NOT_SET) {
123                 printf("Unexpectedly got a valid environment configuration\n");
124                 return -1;
125         }
126
127         /* Verify that function pointers are NULL */
128         if (check_function_ptrs() < 0)
129                 goto fail_all;
130
131         rte_power_unset_env();
132
133         /* Perform tests for valid environments.*/
134         const enum power_management_env envs[] = {PM_ENV_ACPI_CPUFREQ,
135                         PM_ENV_KVM_VM,
136                         PM_ENV_PSTATE_CPUFREQ,
137                         PM_ENV_CPPC_CPUFREQ};
138
139         unsigned int i;
140         for (i = 0; i < RTE_DIM(envs); ++i) {
141
142                 /* Test setting a valid environment */
143                 ret = rte_power_set_env(envs[i]);
144                 if (ret != 0) {
145                         printf("Unexpectedly unsucceeded on setting a valid environment\n");
146                         return -1;
147                 }
148
149                 /* Test that the environment has been set */
150                 env = rte_power_get_env();
151                 if (env != envs[i]) {
152                         printf("Not expected environment configuration\n");
153                         return -1;
154                 }
155
156                 /* Verify that function pointers are NOT NULL */
157                 if (check_function_ptrs() < 0)
158                         goto fail_all;
159
160                 rte_power_unset_env();
161
162                 /* Verify that function pointers are NULL */
163                 if (check_function_ptrs() < 0)
164                         goto fail_all;
165
166         }
167
168         return 0;
169 fail_all:
170         rte_power_unset_env();
171         return -1;
172 }
173 #endif
174
175 REGISTER_TEST_COMMAND(power_autotest, test_power);