1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- // This file defines data types used to retrieve coalition metrics from the OS.
- #ifndef COMPONENTS_POWER_METRICS_RESOURCE_COALITION_INTERNAL_TYPES_MAC_H_
- #define COMPONENTS_POWER_METRICS_RESOURCE_COALITION_INTERNAL_TYPES_MAC_H_
- #include <stdint.h>
- // Comes from osfmk/mach/coalition.h
- #define COALITION_TYPE_RESOURCE (0)
- #define COALITION_TYPE_JETSAM (1)
- #define COALITION_TYPE_MAX (1)
- #define COALITION_NUM_TYPES (COALITION_TYPE_MAX + 1)
- #define COALITION_NUM_THREAD_QOS_TYPES 7
- // Comes from osfmk/mach/thread_policy.h
- #define THREAD_QOS_UNSPECIFIED 0
- #define THREAD_QOS_DEFAULT THREAD_QOS_UNSPECIFIED /* Temporary rename */
- #define THREAD_QOS_MAINTENANCE 1
- #define THREAD_QOS_BACKGROUND 2
- #define THREAD_QOS_UTILITY 3
- #define THREAD_QOS_LEGACY 4 /* i.e. default workq threads */
- #define THREAD_QOS_USER_INITIATED 5
- #define THREAD_QOS_USER_INTERACTIVE 6
- #define THREAD_QOS_LAST 7
- static_assert(COALITION_NUM_THREAD_QOS_TYPES == THREAD_QOS_LAST,
- "Unexpected number of QoS levels.");
- // Comes from bsd/sys/coalition.h
- struct coalition_resource_usage {
- uint64_t tasks_started;
- uint64_t tasks_exited;
- uint64_t time_nonempty;
- uint64_t cpu_time;
- uint64_t interrupt_wakeups;
- uint64_t platform_idle_wakeups;
- uint64_t bytesread;
- uint64_t byteswritten;
- uint64_t gpu_time;
- uint64_t cpu_time_billed_to_me;
- uint64_t cpu_time_billed_to_others;
- uint64_t energy;
- uint64_t logical_immediate_writes;
- uint64_t logical_deferred_writes;
- uint64_t logical_invalidated_writes;
- uint64_t logical_metadata_writes;
- uint64_t logical_immediate_writes_to_external;
- uint64_t logical_deferred_writes_to_external;
- uint64_t logical_invalidated_writes_to_external;
- uint64_t logical_metadata_writes_to_external;
- uint64_t energy_billed_to_me;
- uint64_t energy_billed_to_others;
- uint64_t cpu_ptime;
- uint64_t cpu_time_eqos_len; /* Stores the number of thread QoS types */
- uint64_t cpu_time_eqos[COALITION_NUM_THREAD_QOS_TYPES];
- // `cpu_instructions` and `cpu_cycles` are only populated on macOS 10.15+
- uint64_t cpu_instructions;
- uint64_t cpu_cycles;
- uint64_t fs_metadata_writes;
- uint64_t pm_writes;
- };
- struct proc_pidcoalitioninfo {
- uint64_t coalition_id[COALITION_NUM_TYPES];
- uint64_t reserved1;
- uint64_t reserved2;
- uint64_t reserved3;
- };
- // Comes from bsd/sys/proc_info.h
- #define PROC_PIDCOALITIONINFO 20
- #endif // COMPONENTS_POWER_METRICS_RESOURCE_COALITION_INTERNAL_TYPES_MAC_H_
|