Lines Matching full:pl
94 int fprop_local_init_single(struct fprop_local_single *pl) in fprop_local_init_single() argument
96 pl->events = 0; in fprop_local_init_single()
97 pl->period = 0; in fprop_local_init_single()
98 raw_spin_lock_init(&pl->lock); in fprop_local_init_single()
102 void fprop_local_destroy_single(struct fprop_local_single *pl) in fprop_local_destroy_single() argument
107 struct fprop_local_single *pl) in fprop_reflect_period_single() argument
113 if (pl->period == period) in fprop_reflect_period_single()
115 raw_spin_lock_irqsave(&pl->lock, flags); in fprop_reflect_period_single()
116 /* Someone updated pl->period while we were spinning? */ in fprop_reflect_period_single()
117 if (pl->period >= period) { in fprop_reflect_period_single()
118 raw_spin_unlock_irqrestore(&pl->lock, flags); in fprop_reflect_period_single()
122 if (period - pl->period < BITS_PER_LONG) in fprop_reflect_period_single()
123 pl->events >>= period - pl->period; in fprop_reflect_period_single()
125 pl->events = 0; in fprop_reflect_period_single()
126 pl->period = period; in fprop_reflect_period_single()
127 raw_spin_unlock_irqrestore(&pl->lock, flags); in fprop_reflect_period_single()
130 /* Event of type pl happened */
131 void __fprop_inc_single(struct fprop_global *p, struct fprop_local_single *pl) in __fprop_inc_single() argument
133 fprop_reflect_period_single(p, pl); in __fprop_inc_single()
134 pl->events++; in __fprop_inc_single()
138 /* Return fraction of events of type pl */
140 struct fprop_local_single *pl, in fprop_fraction_single() argument
148 fprop_reflect_period_single(p, pl); in fprop_fraction_single()
149 num = pl->events; in fprop_fraction_single()
172 int fprop_local_init_percpu(struct fprop_local_percpu *pl, gfp_t gfp) in fprop_local_init_percpu() argument
176 err = percpu_counter_init(&pl->events, 0, gfp); in fprop_local_init_percpu()
179 pl->period = 0; in fprop_local_init_percpu()
180 raw_spin_lock_init(&pl->lock); in fprop_local_init_percpu()
184 void fprop_local_destroy_percpu(struct fprop_local_percpu *pl) in fprop_local_destroy_percpu() argument
186 percpu_counter_destroy(&pl->events); in fprop_local_destroy_percpu()
190 struct fprop_local_percpu *pl) in fprop_reflect_period_percpu() argument
196 if (pl->period == period) in fprop_reflect_period_percpu()
198 raw_spin_lock_irqsave(&pl->lock, flags); in fprop_reflect_period_percpu()
199 /* Someone updated pl->period while we were spinning? */ in fprop_reflect_period_percpu()
200 if (pl->period >= period) { in fprop_reflect_period_percpu()
201 raw_spin_unlock_irqrestore(&pl->lock, flags); in fprop_reflect_period_percpu()
205 if (period - pl->period < BITS_PER_LONG) { in fprop_reflect_period_percpu()
206 s64 val = percpu_counter_read(&pl->events); in fprop_reflect_period_percpu()
209 val = percpu_counter_sum(&pl->events); in fprop_reflect_period_percpu()
211 percpu_counter_add_batch(&pl->events, in fprop_reflect_period_percpu()
212 -val + (val >> (period-pl->period)), PROP_BATCH); in fprop_reflect_period_percpu()
214 percpu_counter_set(&pl->events, 0); in fprop_reflect_period_percpu()
215 pl->period = period; in fprop_reflect_period_percpu()
216 raw_spin_unlock_irqrestore(&pl->lock, flags); in fprop_reflect_period_percpu()
219 /* Event of type pl happened */
220 void __fprop_inc_percpu(struct fprop_global *p, struct fprop_local_percpu *pl) in __fprop_inc_percpu() argument
222 fprop_reflect_period_percpu(p, pl); in __fprop_inc_percpu()
223 percpu_counter_add_batch(&pl->events, 1, PROP_BATCH); in __fprop_inc_percpu()
228 struct fprop_local_percpu *pl, in fprop_fraction_percpu() argument
236 fprop_reflect_period_percpu(p, pl); in fprop_fraction_percpu()
237 num = percpu_counter_read_positive(&pl->events); in fprop_fraction_percpu()
260 struct fprop_local_percpu *pl, int max_frac) in __fprop_inc_percpu_max() argument
265 fprop_fraction_percpu(p, pl, &numerator, &denominator); in __fprop_inc_percpu_max()
271 __fprop_inc_percpu(p, pl); in __fprop_inc_percpu_max()