|
14 | 14 | #include <linux/delayacct.h>
|
15 | 15 | #include <linux/module.h>
|
16 | 16 |
|
| 17 | +#define UPDATE_DELAY(type) \ |
| 18 | +do { \ |
| 19 | + d->type##_delay_max = tsk->delays->type##_delay_max; \ |
| 20 | + d->type##_delay_min = tsk->delays->type##_delay_min; \ |
| 21 | + tmp = d->type##_delay_total + tsk->delays->type##_delay; \ |
| 22 | + d->type##_delay_total = (tmp < d->type##_delay_total) ? 0 : tmp; \ |
| 23 | + d->type##_count += tsk->delays->type##_count; \ |
| 24 | +} while (0) |
| 25 | + |
17 | 26 | DEFINE_STATIC_KEY_FALSE(delayacct_key);
|
18 | 27 | int delayacct_on __read_mostly; /* Delay accounting turned on/off */
|
19 | 28 | struct kmem_cache *delayacct_cache;
|
@@ -173,41 +182,13 @@ int delayacct_add_tsk(struct taskstats *d, struct task_struct *tsk)
|
173 | 182 |
|
174 | 183 | /* zero XXX_total, non-zero XXX_count implies XXX stat overflowed */
|
175 | 184 | raw_spin_lock_irqsave(&tsk->delays->lock, flags);
|
176 |
| - d->blkio_delay_max = tsk->delays->blkio_delay_max; |
177 |
| - d->blkio_delay_min = tsk->delays->blkio_delay_min; |
178 |
| - tmp = d->blkio_delay_total + tsk->delays->blkio_delay; |
179 |
| - d->blkio_delay_total = (tmp < d->blkio_delay_total) ? 0 : tmp; |
180 |
| - d->swapin_delay_max = tsk->delays->swapin_delay_max; |
181 |
| - d->swapin_delay_min = tsk->delays->swapin_delay_min; |
182 |
| - tmp = d->swapin_delay_total + tsk->delays->swapin_delay; |
183 |
| - d->swapin_delay_total = (tmp < d->swapin_delay_total) ? 0 : tmp; |
184 |
| - d->freepages_delay_max = tsk->delays->freepages_delay_max; |
185 |
| - d->freepages_delay_min = tsk->delays->freepages_delay_min; |
186 |
| - tmp = d->freepages_delay_total + tsk->delays->freepages_delay; |
187 |
| - d->freepages_delay_total = (tmp < d->freepages_delay_total) ? 0 : tmp; |
188 |
| - d->thrashing_delay_max = tsk->delays->thrashing_delay_max; |
189 |
| - d->thrashing_delay_min = tsk->delays->thrashing_delay_min; |
190 |
| - tmp = d->thrashing_delay_total + tsk->delays->thrashing_delay; |
191 |
| - d->thrashing_delay_total = (tmp < d->thrashing_delay_total) ? 0 : tmp; |
192 |
| - d->compact_delay_max = tsk->delays->compact_delay_max; |
193 |
| - d->compact_delay_min = tsk->delays->compact_delay_min; |
194 |
| - tmp = d->compact_delay_total + tsk->delays->compact_delay; |
195 |
| - d->compact_delay_total = (tmp < d->compact_delay_total) ? 0 : tmp; |
196 |
| - d->wpcopy_delay_max = tsk->delays->wpcopy_delay_max; |
197 |
| - d->wpcopy_delay_min = tsk->delays->wpcopy_delay_min; |
198 |
| - tmp = d->wpcopy_delay_total + tsk->delays->wpcopy_delay; |
199 |
| - d->wpcopy_delay_total = (tmp < d->wpcopy_delay_total) ? 0 : tmp; |
200 |
| - d->irq_delay_max = tsk->delays->irq_delay_max; |
201 |
| - d->irq_delay_min = tsk->delays->irq_delay_min; |
202 |
| - tmp = d->irq_delay_total + tsk->delays->irq_delay; |
203 |
| - d->irq_delay_total = (tmp < d->irq_delay_total) ? 0 : tmp; |
204 |
| - d->blkio_count += tsk->delays->blkio_count; |
205 |
| - d->swapin_count += tsk->delays->swapin_count; |
206 |
| - d->freepages_count += tsk->delays->freepages_count; |
207 |
| - d->thrashing_count += tsk->delays->thrashing_count; |
208 |
| - d->compact_count += tsk->delays->compact_count; |
209 |
| - d->wpcopy_count += tsk->delays->wpcopy_count; |
210 |
| - d->irq_count += tsk->delays->irq_count; |
| 185 | + UPDATE_DELAY(blkio); |
| 186 | + UPDATE_DELAY(swapin); |
| 187 | + UPDATE_DELAY(freepages); |
| 188 | + UPDATE_DELAY(thrashing); |
| 189 | + UPDATE_DELAY(compact); |
| 190 | + UPDATE_DELAY(wpcopy); |
| 191 | + UPDATE_DELAY(irq); |
211 | 192 | raw_spin_unlock_irqrestore(&tsk->delays->lock, flags);
|
212 | 193 |
|
213 | 194 | return 0;
|
|
0 commit comments