include/linux/pm_qos.h
Source file repositories/reference/linux-study-clean/include/linux/pm_qos.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/pm_qos.h- Extension
.h- Size
- 10858 bytes
- Lines
- 329
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Touches user memory; correctness depends on fault-safe copying and privilege boundary handling.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/plist.hlinux/notifier.hlinux/device.h
Detected Declarations
struct pm_qos_constraintsstruct pm_qos_requeststruct pm_qos_flags_requeststruct pm_qos_flagsstruct freq_constraintsstruct freq_qos_requeststruct dev_pm_qos_requeststruct dev_pm_qosenum pm_qos_flags_statusenum pm_qos_typeenum freq_qos_req_typeenum dev_pm_qos_req_typeenum pm_qos_req_actionfunction dev_pm_qos_request_activefunction cpu_latency_qos_limitfunction cpu_latency_qos_request_activefunction cpu_latency_qos_add_requestfunction cpu_wakeup_latency_qos_limitfunction dev_pm_qos_requested_resume_latencyfunction dev_pm_qos_requested_flagsfunction dev_pm_qos_raw_resume_latencyfunction __dev_pm_qos_flagsfunction dev_pm_qos_flagsfunction __dev_pm_qos_resume_latencyfunction dev_pm_qos_read_valuefunction dev_pm_qos_add_requestfunction dev_pm_qos_update_requestfunction dev_pm_qos_remove_requestfunction dev_pm_qos_add_notifierfunction dev_pm_qos_remove_notifierfunction dev_pm_qos_constraints_initfunction dev_pm_qos_constraints_destroyfunction dev_pm_qos_add_ancestor_requestfunction dev_pm_qos_expose_latency_limitfunction dev_pm_qos_hide_latency_limitfunction dev_pm_qos_hide_flagsfunction dev_pm_qos_get_user_latency_tolerancefunction dev_pm_qos_update_user_latency_tolerancefunction dev_pm_qos_expose_latency_tolerancefunction dev_pm_qos_hide_latency_tolerancefunction dev_pm_qos_requested_flagsfunction dev_pm_qos_raw_resume_latencyfunction freq_qos_request_active
Annotated Snippet
struct pm_qos_constraints {
struct plist_head list;
s32 target_value; /* Do not change to 64 bit */
s32 default_value;
s32 no_constraint_value;
enum pm_qos_type type;
struct blocking_notifier_head *notifiers;
};
struct pm_qos_request {
struct plist_node node;
struct pm_qos_constraints *qos;
};
struct pm_qos_flags_request {
struct list_head node;
s32 flags; /* Do not change to 64 bit */
};
struct pm_qos_flags {
struct list_head list;
s32 effective_flags; /* Do not change to 64 bit */
};
#define FREQ_QOS_MIN_DEFAULT_VALUE 0
#define FREQ_QOS_MAX_DEFAULT_VALUE S32_MAX
enum freq_qos_req_type {
FREQ_QOS_MIN = 1,
FREQ_QOS_MAX,
};
struct freq_constraints {
struct pm_qos_constraints min_freq;
struct blocking_notifier_head min_freq_notifiers;
struct pm_qos_constraints max_freq;
struct blocking_notifier_head max_freq_notifiers;
};
struct freq_qos_request {
enum freq_qos_req_type type;
struct plist_node pnode;
struct freq_constraints *qos;
};
enum dev_pm_qos_req_type {
DEV_PM_QOS_RESUME_LATENCY = 1,
DEV_PM_QOS_LATENCY_TOLERANCE,
DEV_PM_QOS_MIN_FREQUENCY,
DEV_PM_QOS_MAX_FREQUENCY,
DEV_PM_QOS_FLAGS,
};
struct dev_pm_qos_request {
enum dev_pm_qos_req_type type;
union {
struct plist_node pnode;
struct pm_qos_flags_request flr;
struct freq_qos_request freq;
} data;
struct device *dev;
};
struct dev_pm_qos {
struct pm_qos_constraints resume_latency;
struct pm_qos_constraints latency_tolerance;
struct freq_constraints freq;
struct pm_qos_flags flags;
struct dev_pm_qos_request *resume_latency_req;
struct dev_pm_qos_request *latency_tolerance_req;
struct dev_pm_qos_request *flags_req;
};
/* Action requested to pm_qos_update_target */
enum pm_qos_req_action {
PM_QOS_ADD_REQ, /* Add a new request */
PM_QOS_UPDATE_REQ, /* Update an existing request */
PM_QOS_REMOVE_REQ /* Remove an existing request */
};
static inline int dev_pm_qos_request_active(struct dev_pm_qos_request *req)
{
return req->dev != NULL;
}
s32 pm_qos_read_value(struct pm_qos_constraints *c);
int pm_qos_update_target(struct pm_qos_constraints *c, struct plist_node *node,
enum pm_qos_req_action action, int value);
Annotation
- Immediate include surface: `linux/plist.h`, `linux/notifier.h`, `linux/device.h`.
- Detected declarations: `struct pm_qos_constraints`, `struct pm_qos_request`, `struct pm_qos_flags_request`, `struct pm_qos_flags`, `struct freq_constraints`, `struct freq_qos_request`, `struct dev_pm_qos_request`, `struct dev_pm_qos`, `enum pm_qos_flags_status`, `enum pm_qos_type`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: source implementation candidate.
- This snippet crosses the user/kernel memory boundary; validate fault handling and access checks before translating the pattern.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.