/* * Abbreviations: * dbs: used as a shortform for demand based switching It helps to keep variable * names smaller, simpler * cdbs: common dbs * od_*: On-demand governor * cs_*: Conservative governor
*/
/* Common to all CPUs of a policy */ struct policy_dbs_info { struct cpufreq_policy *policy; /* * Per policy mutex that serializes load evaluation from limit-change * and work-handler.
*/ struct mutex update_mutex;
u64 last_sample_time;
s64 sample_delay_ns;
atomic_t work_count; struct irq_work irq_work; struct work_struct work; /* dbs_data may be shared between multiple policy objects */ struct dbs_data *dbs_data; struct list_head list; /* Multiplier for increasing sample delay temporarily. */ unsignedint rate_mult; unsignedint idle_periods; /* For conservative */ /* Status indicators */ bool is_shared; /* This object is used by multiple CPUs */ bool work_in_progress; /* Work is being queued up or in progress */
};
/* Per cpu structures */ struct cpu_dbs_info {
u64 prev_cpu_idle;
u64 prev_update_time;
u64 prev_cpu_nice; /* * Used to keep track of load in the previous interval. However, when * explicitly set to zero, it is used as a flag to ensure that we copy * the previous load to the current interval only once, upon the first * wake-up from idle.
*/ unsignedint prev_load; struct update_util_data update_util; struct policy_dbs_info *policy_dbs;
};
/* Common Governor data across policies */ struct dbs_governor { struct cpufreq_governor gov; struct kobj_type kobj_type;
/* * Common data for platforms that don't set * CPUFREQ_HAVE_GOVERNOR_PER_POLICY
*/ struct dbs_data *gdbs_data;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.