Lines Matching refs:pl
191 int prop_local_init_percpu(struct prop_local_percpu *pl, gfp_t gfp) in prop_local_init_percpu() argument
193 raw_spin_lock_init(&pl->lock); in prop_local_init_percpu()
194 pl->shift = 0; in prop_local_init_percpu()
195 pl->period = 0; in prop_local_init_percpu()
196 return percpu_counter_init(&pl->events, 0, gfp); in prop_local_init_percpu()
199 void prop_local_destroy_percpu(struct prop_local_percpu *pl) in prop_local_destroy_percpu() argument
201 percpu_counter_destroy(&pl->events); in prop_local_destroy_percpu()
212 void prop_norm_percpu(struct prop_global *pg, struct prop_local_percpu *pl) in prop_norm_percpu() argument
226 if (pl->period == global_period) in prop_norm_percpu()
229 raw_spin_lock_irqsave(&pl->lock, flags); in prop_norm_percpu()
230 prop_adjust_shift(&pl->shift, &pl->period, pg->shift); in prop_norm_percpu()
237 period = (global_period - pl->period) >> (pg->shift - 1); in prop_norm_percpu()
239 s64 val = percpu_counter_read(&pl->events); in prop_norm_percpu()
242 val = percpu_counter_sum(&pl->events); in prop_norm_percpu()
244 __percpu_counter_add(&pl->events, -val + (val >> period), in prop_norm_percpu()
247 percpu_counter_set(&pl->events, 0); in prop_norm_percpu()
249 pl->period = global_period; in prop_norm_percpu()
250 raw_spin_unlock_irqrestore(&pl->lock, flags); in prop_norm_percpu()
256 void __prop_inc_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl) in __prop_inc_percpu() argument
260 prop_norm_percpu(pg, pl); in __prop_inc_percpu()
261 __percpu_counter_add(&pl->events, 1, PROP_BATCH); in __prop_inc_percpu()
271 struct prop_local_percpu *pl, long frac) in __prop_inc_percpu_max() argument
275 prop_norm_percpu(pg, pl); in __prop_inc_percpu_max()
283 numerator = percpu_counter_read_positive(&pl->events); in __prop_inc_percpu_max()
291 percpu_counter_add(&pl->events, 1); in __prop_inc_percpu_max()
304 struct prop_local_percpu *pl, in prop_fraction_percpu() argument
312 prop_norm_percpu(pg, pl); in prop_fraction_percpu()
313 *numerator = percpu_counter_read_positive(&pl->events); in prop_fraction_percpu()
325 int prop_local_init_single(struct prop_local_single *pl) in prop_local_init_single() argument
327 raw_spin_lock_init(&pl->lock); in prop_local_init_single()
328 pl->shift = 0; in prop_local_init_single()
329 pl->period = 0; in prop_local_init_single()
330 pl->events = 0; in prop_local_init_single()
334 void prop_local_destroy_single(struct prop_local_single *pl) in prop_local_destroy_single() argument
342 void prop_norm_single(struct prop_global *pg, struct prop_local_single *pl) in prop_norm_single() argument
356 if (pl->period == global_period) in prop_norm_single()
359 raw_spin_lock_irqsave(&pl->lock, flags); in prop_norm_single()
360 prop_adjust_shift(&pl->shift, &pl->period, pg->shift); in prop_norm_single()
364 period = (global_period - pl->period) >> (pg->shift - 1); in prop_norm_single()
366 pl->events >>= period; in prop_norm_single()
368 pl->events = 0; in prop_norm_single()
369 pl->period = global_period; in prop_norm_single()
370 raw_spin_unlock_irqrestore(&pl->lock, flags); in prop_norm_single()
376 void __prop_inc_single(struct prop_descriptor *pd, struct prop_local_single *pl) in __prop_inc_single() argument
380 prop_norm_single(pg, pl); in __prop_inc_single()
381 pl->events++; in __prop_inc_single()
392 struct prop_local_single *pl, in prop_fraction_single() argument
400 prop_norm_single(pg, pl); in prop_fraction_single()
401 *numerator = pl->events; in prop_fraction_single()