Lines Matching defs:pl
91 int fprop_local_init_percpu(struct fprop_local_percpu *pl, gfp_t gfp)
95 err = percpu_counter_init(&pl->events, 0, gfp);
98 pl->period = 0;
99 raw_spin_lock_init(&pl->lock);
103 void fprop_local_destroy_percpu(struct fprop_local_percpu *pl)
105 percpu_counter_destroy(&pl->events);
109 struct fprop_local_percpu *pl)
115 if (pl->period == period)
117 raw_spin_lock_irqsave(&pl->lock, flags);
118 /* Someone updated pl->period while we were spinning? */
119 if (pl->period >= period) {
120 raw_spin_unlock_irqrestore(&pl->lock, flags);
124 if (period - pl->period < BITS_PER_LONG) {
125 s64 val = percpu_counter_read(&pl->events);
128 val = percpu_counter_sum(&pl->events);
130 percpu_counter_add_batch(&pl->events,
131 -val + (val >> (period-pl->period)), PROP_BATCH);
133 percpu_counter_set(&pl->events, 0);
134 pl->period = period;
135 raw_spin_unlock_irqrestore(&pl->lock, flags);
138 /* Event of type pl happened */
139 void __fprop_add_percpu(struct fprop_global *p, struct fprop_local_percpu *pl,
142 fprop_reflect_period_percpu(p, pl);
143 percpu_counter_add_batch(&pl->events, nr, PROP_BATCH);
148 struct fprop_local_percpu *pl,
156 fprop_reflect_period_percpu(p, pl);
157 num = percpu_counter_read_positive(&pl->events);
180 struct fprop_local_percpu *pl, int max_frac, long nr)
186 fprop_fraction_percpu(p, pl, &numerator, &denominator);
200 __fprop_add_percpu(p, pl, nr);