Zephyr Project API
3.3.0
A Scalable Open Source RTOS
policy.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2018 Intel Corporation.
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*/
6
7
#ifndef ZEPHYR_INCLUDE_PM_POLICY_H_
8
#define ZEPHYR_INCLUDE_PM_POLICY_H_
9
10
#include <
stdbool.h
>
11
#include <
stdint.h
>
12
13
#include <
zephyr/pm/state.h
>
14
#include <
zephyr/sys/slist.h
>
15
#include <
zephyr/toolchain.h
>
16
17
#ifdef __cplusplus
18
extern
"C"
{
19
#endif
20
35
typedef
void (*
pm_policy_latency_changed_cb_t
)(
int32_t
latency);
36
38
struct
pm_policy_latency_subscription
{
39
sys_snode_t
node
;
41
pm_policy_latency_changed_cb_t
cb
;
42
};
43
45
struct
pm_policy_latency_request
{
46
sys_snode_t
node
;
48
uint32_t
value
;
49
};
50
66
const
struct
pm_state_info
*
pm_policy_next_state
(
uint8_t
cpu,
int32_t
ticks);
67
71
#define PM_ALL_SUBSTATES (UINT8_MAX)
72
73
#if defined(CONFIG_PM) || defined(__DOXYGEN__)
92
void
pm_policy_state_lock_get
(
enum
pm_state
state
,
uint8_t
substate_id
);
93
103
void
pm_policy_state_lock_put
(
enum
pm_state
state
,
uint8_t
substate_id
);
104
115
bool
pm_policy_state_lock_is_active
(
enum
pm_state
state
,
uint8_t
substate_id
);
116
126
void
pm_policy_latency_request_add
(
struct
pm_policy_latency_request
*req,
127
uint32_t
value);
128
135
void
pm_policy_latency_request_update
(
struct
pm_policy_latency_request
*req,
136
uint32_t
value);
137
143
void
pm_policy_latency_request_remove
(
struct
pm_policy_latency_request
*req);
144
151
void
pm_policy_latency_changed_subscribe
(
struct
pm_policy_latency_subscription
*req,
152
pm_policy_latency_changed_cb_t
cb);
153
159
void
pm_policy_latency_changed_unsubscribe
(
struct
pm_policy_latency_subscription
*req);
160
161
#else
162
static
inline
void
pm_policy_state_lock_get
(
enum
pm_state
state
,
uint8_t
substate_id
)
163
{
164
ARG_UNUSED(
state
);
165
ARG_UNUSED(
substate_id
);
166
}
167
168
static
inline
void
pm_policy_state_lock_put
(
enum
pm_state
state
,
uint8_t
substate_id
)
169
{
170
ARG_UNUSED(
state
);
171
ARG_UNUSED(
substate_id
);
172
}
173
174
static
inline
bool
pm_policy_state_lock_is_active
(
enum
pm_state
state
,
uint8_t
substate_id
)
175
{
176
ARG_UNUSED(
state
);
177
ARG_UNUSED(
substate_id
);
178
179
return
false
;
180
}
181
182
static
inline
void
pm_policy_latency_request_add
(
183
struct
pm_policy_latency_request
*req,
uint32_t
value)
184
{
185
ARG_UNUSED(req);
186
ARG_UNUSED(value);
187
}
188
189
static
inline
void
pm_policy_latency_request_update
(
190
struct
pm_policy_latency_request
*req,
uint32_t
value)
191
{
192
ARG_UNUSED(req);
193
ARG_UNUSED(value);
194
}
195
196
static
inline
void
pm_policy_latency_request_remove
(
197
struct
pm_policy_latency_request
*req)
198
{
199
ARG_UNUSED(req);
200
}
201
#endif
/* CONFIG_PM */
202
207
#ifdef __cplusplus
208
}
209
#endif
210
211
#endif
/* ZEPHYR_INCLUDE_PM_POLICY_H_ */
pm_state
pm_state
Definition:
state.h:27
pm_policy_state_lock_put
void pm_policy_state_lock_put(enum pm_state state, uint8_t substate_id)
Decrease a power state lock counter.
pm_policy_state_lock_is_active
bool pm_policy_state_lock_is_active(enum pm_state state, uint8_t substate_id)
Check if a power state lock is active (not allowed).
pm_policy_latency_request_update
void pm_policy_latency_request_update(struct pm_policy_latency_request *req, uint32_t value)
Update a latency requirement.
pm_policy_latency_changed_unsubscribe
void pm_policy_latency_changed_unsubscribe(struct pm_policy_latency_subscription *req)
Unsubscribe to maximum latency changes.
pm_policy_latency_request_add
void pm_policy_latency_request_add(struct pm_policy_latency_request *req, uint32_t value)
Add a new latency requirement.
pm_policy_latency_request_remove
void pm_policy_latency_request_remove(struct pm_policy_latency_request *req)
Remove a latency requirement.
pm_policy_latency_changed_cb_t
void(* pm_policy_latency_changed_cb_t)(int32_t latency)
Callback to notify when maximum latency changes.
Definition:
policy.h:35
pm_policy_state_lock_get
void pm_policy_state_lock_get(enum pm_state state, uint8_t substate_id)
Increase a power state lock counter.
pm_policy_latency_changed_subscribe
void pm_policy_latency_changed_subscribe(struct pm_policy_latency_subscription *req, pm_policy_latency_changed_cb_t cb)
Subscribe to maximum latency changes.
state
state
Definition:
parser_state.h:29
pm_policy_next_state
const struct pm_state_info * pm_policy_next_state(uint8_t cpu, int32_t ticks)
Definition:
main.c:26
slist.h
Single-linked list implementation.
sys_snode_t
struct _snode sys_snode_t
Definition:
slist.h:33
state.h
stdbool.h
stdint.h
uint32_t
__UINT32_TYPE__ uint32_t
Definition:
stdint.h:90
int32_t
__INT32_TYPE__ int32_t
Definition:
stdint.h:74
uint8_t
__UINT8_TYPE__ uint8_t
Definition:
stdint.h:88
pm_policy_latency_request
Latency request.
Definition:
policy.h:45
pm_policy_latency_request::value
uint32_t value
Definition:
policy.h:48
pm_policy_latency_request::node
sys_snode_t node
Definition:
policy.h:46
pm_policy_latency_subscription
Latency change subscription.
Definition:
policy.h:38
pm_policy_latency_subscription::node
sys_snode_t node
Definition:
policy.h:39
pm_policy_latency_subscription::cb
pm_policy_latency_changed_cb_t cb
Definition:
policy.h:41
pm_state_info
Definition:
state.h:114
pm_state_info::substate_id
uint8_t substate_id
Definition:
state.h:141
toolchain.h
Macros to abstract toolchain specific capabilities.
include
zephyr
pm
policy.h
Generated on Fri Jun 9 2023 14:09:43 for Zephyr Project API by
1.9.2