Zephyr Project API
3.2.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
16
#ifdef __cplusplus
17
extern
"C"
{
18
#endif
19
34
typedef
void (*
pm_policy_latency_changed_cb_t
)(
int32_t
latency);
35
37
struct
pm_policy_latency_subscription
{
38
sys_snode_t
node
;
40
pm_policy_latency_changed_cb_t
cb
;
41
};
42
44
struct
pm_policy_latency_request
{
45
sys_snode_t
node
;
47
uint32_t
value
;
48
};
49
65
const
struct
pm_state_info
*
pm_policy_next_state
(
uint8_t
cpu,
int32_t
ticks);
66
70
#define PM_ALL_SUBSTATES (UINT8_MAX)
71
72
#if defined(CONFIG_PM) || defined(__DOXYGEN__)
91
void
pm_policy_state_lock_get
(
enum
pm_state
state
,
uint8_t
substate_id
);
92
102
void
pm_policy_state_lock_put
(
enum
pm_state
state
,
uint8_t
substate_id
);
103
114
bool
pm_policy_state_lock_is_active
(
enum
pm_state
state
,
uint8_t
substate_id
);
115
125
void
pm_policy_latency_request_add
(
struct
pm_policy_latency_request
*req,
126
uint32_t
value);
127
134
void
pm_policy_latency_request_update
(
struct
pm_policy_latency_request
*req,
135
uint32_t
value);
136
142
void
pm_policy_latency_request_remove
(
struct
pm_policy_latency_request
*req);
143
150
void
pm_policy_latency_changed_subscribe
(
struct
pm_policy_latency_subscription
*req,
151
pm_policy_latency_changed_cb_t
cb);
152
158
void
pm_policy_latency_changed_unsubscribe
(
struct
pm_policy_latency_subscription
*req);
159
160
#else
161
static
inline
void
pm_policy_state_lock_get
(
enum
pm_state
state
,
uint8_t
substate_id
)
162
{
163
ARG_UNUSED(
state
);
164
ARG_UNUSED(
substate_id
);
165
}
166
167
static
inline
void
pm_policy_state_lock_put
(
enum
pm_state
state
,
uint8_t
substate_id
)
168
{
169
ARG_UNUSED(
state
);
170
ARG_UNUSED(
substate_id
);
171
}
172
173
static
inline
bool
pm_policy_state_lock_is_active
(
enum
pm_state
state
,
uint8_t
substate_id
)
174
{
175
ARG_UNUSED(
state
);
176
ARG_UNUSED(
substate_id
);
177
178
return
false
;
179
}
180
181
static
inline
void
pm_policy_latency_request_add
(
182
struct
pm_policy_latency_request
*req,
uint32_t
value)
183
{
184
ARG_UNUSED(req);
185
ARG_UNUSED(value);
186
}
187
188
static
inline
void
pm_policy_latency_request_update
(
189
struct
pm_policy_latency_request
*req,
uint32_t
value)
190
{
191
ARG_UNUSED(req);
192
ARG_UNUSED(value);
193
}
194
195
static
inline
void
pm_policy_latency_request_remove
(
196
struct
pm_policy_latency_request
*req)
197
{
198
ARG_UNUSED(req);
199
}
200
#endif
/* CONFIG_PM */
201
206
#ifdef __cplusplus
207
}
208
#endif
209
210
#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:34
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:
http_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:44
pm_policy_latency_request::value
uint32_t value
Definition:
policy.h:47
pm_policy_latency_request::node
sys_snode_t node
Definition:
policy.h:45
pm_policy_latency_subscription
Latency change subscription.
Definition:
policy.h:37
pm_policy_latency_subscription::node
sys_snode_t node
Definition:
policy.h:38
pm_policy_latency_subscription::cb
pm_policy_latency_changed_cb_t cb
Definition:
policy.h:40
pm_state_info
Definition:
state.h:114
pm_state_info::substate_id
uint8_t substate_id
Definition:
state.h:141
include
zephyr
pm
policy.h
Generated on Tue Feb 28 2023 15:43:19 for Zephyr Project API by
1.9.2