Zephyr Project API  3.1.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
17extern "C" {
18#endif
19
34typedef void (*pm_policy_latency_changed_cb_t)(int32_t latency);
35
41};
42
58const struct pm_state_info *pm_policy_next_state(uint8_t cpu, int32_t ticks);
59
63#define PM_ALL_SUBSTATES (UINT8_MAX)
64
65#if defined(CONFIG_PM) || defined(__DOXYGEN__)
85
96
108
119 uint32_t value);
120
128 uint32_t value);
129
136
143#else
145{
146 ARG_UNUSED(state);
147 ARG_UNUSED(substate_id);
148}
149
151{
152 ARG_UNUSED(state);
153 ARG_UNUSED(substate_id);
154}
155
157{
158 ARG_UNUSED(state);
159 ARG_UNUSED(substate_id);
160
161 return false;
162}
163
164static inline void pm_policy_latency_request_add(
165 struct pm_policy_latency_request *req, uint32_t value)
166{
167 ARG_UNUSED(req);
168 ARG_UNUSED(value);
169}
170
171static inline void pm_policy_latency_request_update(
172 struct pm_policy_latency_request *req, uint32_t value)
173{
174 ARG_UNUSED(req);
175 ARG_UNUSED(value);
176}
177
178static inline void pm_policy_latency_request_remove(
179 struct pm_policy_latency_request *req)
180{
181 ARG_UNUSED(req);
182}
183#endif /* CONFIG_PM */
184
189#ifdef __cplusplus
190}
191#endif
192
193#endif /* ZEPHYR_INCLUDE_PM_POLICY_H_ */
pm_state
Definition: state.h:27
void pm_policy_state_lock_put(enum pm_state state, uint8_t substate_id)
Decrease a power state lock counter.
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).
void pm_policy_latency_request_update(struct pm_policy_latency_request *req, uint32_t value)
Update a latency requirement.
void pm_policy_latency_request_add(struct pm_policy_latency_request *req, uint32_t value)
Add a new latency requirement.
void pm_policy_latency_request_remove(struct pm_policy_latency_request *req)
Remove a latency requirement.
void pm_policy_latency_changed(pm_policy_latency_changed_cb_t cb)
Set the callback to be called when maximum latency changes.
void(* pm_policy_latency_changed_cb_t)(int32_t latency)
Callback to notify when maximum latency changes.
Definition: policy.h:34
void pm_policy_state_lock_get(enum pm_state state, uint8_t substate_id)
Increase a power state lock counter.
state
Definition: http_parser_state.h:29
const struct pm_state_info * pm_policy_next_state(uint8_t cpu, int32_t ticks)
Definition: main.c:26
Single-linked list implementation.
struct _snode sys_snode_t
Definition: slist.h:33
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__INT32_TYPE__ int32_t
Definition: stdint.h:74
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
Latency request.
Definition: policy.h:37
uint32_t value
Definition: policy.h:40
sys_snode_t node
Definition: policy.h:38
Definition: state.h:114
uint8_t substate_id
Definition: state.h:141