doc: whitespace changes in licenses
[dpdk.git] / lib / librte_power / rte_power.h
1 /*-
2  *   BSD LICENSE
3  * 
4  *   Copyright(c) 2010-2013 Intel Corporation. All rights reserved.
5  *   All rights reserved.
6  * 
7  *   Redistribution and use in source and binary forms, with or without
8  *   modification, are permitted provided that the following conditions
9  *   are met:
10  * 
11  *     * Redistributions of source code must retain the above copyright
12  *       notice, this list of conditions and the following disclaimer.
13  *     * Redistributions in binary form must reproduce the above copyright
14  *       notice, this list of conditions and the following disclaimer in
15  *       the documentation and/or other materials provided with the
16  *       distribution.
17  *     * Neither the name of Intel Corporation nor the names of its
18  *       contributors may be used to endorse or promote products derived
19  *       from this software without specific prior written permission.
20  * 
21  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24  *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25  *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26  *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27  *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28  *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29  *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  */
33
34 #ifndef _RTE_POWER_H
35 #define _RTE_POWER_H
36
37 /**
38  * @file
39  * RTE Power Management 
40  */
41
42 #include <rte_common.h>
43 #include <rte_byteorder.h>
44 #include <rte_log.h>
45 #include <rte_string_fns.h>
46
47 #ifdef __cplusplus
48 extern "C" {
49 #endif
50
51 #define RTE_POWER_INVALID_FREQ_INDEX (~0)
52
53 /** 
54  * Initialize power management for a specific lcore. It will check and set the
55  * governor to userspace for the lcore, get the available frequencies, and
56  * prepare to set new lcore frequency.
57  *
58  * @param lcore_id
59  *  lcore id.
60  *
61  * @return 
62  *  - 0 on success.
63  *  - Negative on error.
64  */
65 int rte_power_init(unsigned lcore_id);
66
67 /**
68  * Exit power management on a specific lcore. It will set the governor to which
69  * is before initialized.
70  *
71  * @param lcore_id
72  *  lcore id.
73  *
74  * @return 
75  *  - 0 on success.
76  *  - Negative on error.
77  */
78 int rte_power_exit(unsigned lcore_id);
79
80 /** 
81  * Get the available frequencies of a specific lcore. The return value will be
82  * the minimal one of the total number of available frequencies and the number
83  * of buffer. The index of available frequencies used in other interfaces
84  * should be in the range of 0 to this return value.
85  * It should be protected outside of this function for threadsafe.
86  *
87  * @param lcore_id
88  *  lcore id.
89  * @param freqs
90  *  The buffer array to save the frequencies.
91  * @param num
92  *  The number of frequencies to get.
93  *
94  * @return
95  *  The number of available frequencies.
96  */
97 uint32_t rte_power_freqs(unsigned lcore_id, uint32_t *freqs, uint32_t num);
98
99 /** 
100  * Return the current index of available frequencies of a specific lcore. It
101  * will return 'RTE_POWER_INVALID_FREQ_INDEX = (~0)' if error.
102  * It should be protected outside of this function for threadsafe.
103  *
104  * @param lcore_id
105  *  lcore id.
106  *
107  * @return 
108  *  The current index of available frequencies.
109  */
110 uint32_t rte_power_get_freq(unsigned lcore_id);
111
112 /** 
113  * Set the new frequency for a specific lcore by indicating the index of
114  * available frequencies.
115  * It should be protected outside of this function for threadsafe.
116  *
117  * @param lcore_id
118  *  lcore id.
119  * @param index
120  *  The index of available frequencies.
121  *
122  * @return
123  *  - 1 on success with frequency changed.
124  *  - 0 on success without frequency chnaged.
125  *  - Negative on error.
126  */
127 int rte_power_set_freq(unsigned lcore_id, uint32_t index);
128
129 /** 
130  * Scale up the frequency of a specific lcore according to the available
131  * frequencies.
132  * It should be protected outside of this function for threadsafe.
133  *
134  * @param lcore_id
135  *  lcore id.
136  *
137  * @return
138  *  - 1 on success with frequency changed.
139  *  - 0 on success without frequency chnaged.
140  *  - Negative on error.
141  */
142 int rte_power_freq_up(unsigned lcore_id);
143
144 /** 
145  * Scale down the frequency of a specific lcore according to the available
146  * frequencies.
147  * It should be protected outside of this function for threadsafe.
148  *
149  * @param lcore_id
150  *  lcore id.
151  *
152  * @return
153  *  - 1 on success with frequency changed.
154  *  - 0 on success without frequency chnaged.
155  *  - Negative on error.
156  */
157 int rte_power_freq_down(unsigned lcore_id); 
158
159 /** 
160  * Scale up the frequency of a specific lcore to the highest according to the
161  * available frequencies.
162  * It should be protected outside of this function for threadsafe.
163  *
164  * @param lcore_id
165  *  lcore id.
166  *
167  * @return
168  *  - 1 on success with frequency changed.
169  *  - 0 on success without frequency chnaged.
170  *  - Negative on error.
171  */
172 int rte_power_freq_max(unsigned lcore_id);
173
174 /** 
175  * Scale down the frequency of a specific lcore to the lowest according to the
176  * available frequencies.
177  * It should be protected outside of this function for threadsafe.
178  *
179  * @param lcore_id
180  *  lcore id.
181  *
182  * @return
183  *  - 1 on success with frequency changed.
184  *  - 0 on success without frequency chnaged.
185  *  - Negative on error.
186  */
187 int rte_power_freq_min(unsigned lcore_id);
188
189 #ifdef __cplusplus
190 }
191 #endif
192
193 #endif