Skip to content

Commit

Permalink
cpufreq: simplify for_each_suitable_policy() macro
Browse files Browse the repository at this point in the history
Signed-off-by: Eric Biggers <[email protected]>
Acked-by: Viresh Kumar <[email protected]>
Signed-off-by: Rafael J. Wysocki <[email protected]>
  • Loading branch information
ebiggers authored and rafaeljw committed Feb 22, 2016
1 parent 63af405 commit fd7dc7e
Showing 1 changed file with 3 additions and 41 deletions.
44 changes: 3 additions & 41 deletions drivers/cpufreq/cpufreq.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,48 +38,10 @@ static inline bool policy_is_inactive(struct cpufreq_policy *policy)
return cpumask_empty(policy->cpus);
}

static bool suitable_policy(struct cpufreq_policy *policy, bool active)
{
return active == !policy_is_inactive(policy);
}

/* Finds Next Acive/Inactive policy */
static struct cpufreq_policy *next_policy(struct cpufreq_policy *policy,
bool active)
{
do {
/* No more policies in the list */
if (list_is_last(&policy->policy_list, &cpufreq_policy_list))
return NULL;

policy = list_next_entry(policy, policy_list);
} while (!suitable_policy(policy, active));

return policy;
}

static struct cpufreq_policy *first_policy(bool active)
{
struct cpufreq_policy *policy;

/* No policies in the list */
if (list_empty(&cpufreq_policy_list))
return NULL;

policy = list_first_entry(&cpufreq_policy_list, typeof(*policy),
policy_list);

if (!suitable_policy(policy, active))
policy = next_policy(policy, active);

return policy;
}

/* Macros to iterate over CPU policies */
#define for_each_suitable_policy(__policy, __active) \
for (__policy = first_policy(__active); \
__policy; \
__policy = next_policy(__policy, __active))
#define for_each_suitable_policy(__policy, __active) \
list_for_each_entry(__policy, &cpufreq_policy_list, policy_list) \
if ((__active) == !policy_is_inactive(__policy))

#define for_each_active_policy(__policy) \
for_each_suitable_policy(__policy, true)
Expand Down

0 comments on commit fd7dc7e

Please sign in to comment.