On Thu, 28 Oct 2010 16:13:36 +0100 Mel Gorman <mel@xxxxxxxxx> wrote: > reduce_pgdat_percpu_threshold() and restore_pgdat_percpu_threshold() > exist to adjust the per-cpu vmstat thresholds while kswapd is awake to > avoid errors due to counter drift. The functions duplicate some code so > this patch replaces them with a single set_pgdat_percpu_threshold() that > takes a callback function to calculate the desired threshold as a > parameter. hm. Could have passed in some silly flag rather than a function pointer but whatever. > > ... > > -void reduce_pgdat_percpu_threshold(pg_data_t *pgdat) > +void set_pgdat_percpu_threshold(pg_data_t *pgdat, > + int (*calculate_pressure)(struct zone *)) > { > struct zone *zone; > int cpu; > @@ -196,28 +197,7 @@ void reduce_pgdat_percpu_threshold(pg_data_t *pgdat) > if (!zone->percpu_drift_mark) > continue; > > - threshold = calculate_pressure_threshold(zone); > - for_each_online_cpu(cpu) > - per_cpu_ptr(zone->pageset, cpu)->stat_threshold > - = threshold; > - } > - put_online_cpus(); > -} > - > -void restore_pgdat_percpu_threshold(pg_data_t *pgdat) > -{ > - struct zone *zone; > - int cpu; > - int threshold; > - int i; > - > - get_online_cpus(); > - for (i = 0; i < pgdat->nr_zones; i++) { > - zone = &pgdat->node_zones[i]; > - if (!zone->percpu_drift_mark) > - continue; > - > - threshold = calculate_threshold(zone); > + threshold = calculate_pressure(zone); Readability nit: it's better to use the threshold = (*calculate_pressure)(zone); syntax here. So the code reader doesn't go running around trying to find the function "calculate_pressure". I've been fooled that way plenty of times. > for_each_online_cpu(cpu) > per_cpu_ptr(zone->pageset, cpu)->stat_threshold > = threshold; -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>