.. | .. |
---|
231 | 231 | return calc_load_idx & 1; |
---|
232 | 232 | } |
---|
233 | 233 | |
---|
234 | | -void calc_load_nohz_start(void) |
---|
| 234 | +static void calc_load_nohz_fold(struct rq *rq) |
---|
235 | 235 | { |
---|
236 | | - struct rq *this_rq = this_rq(); |
---|
237 | 236 | long delta; |
---|
238 | 237 | |
---|
239 | | - /* |
---|
240 | | - * We're going into NO_HZ mode, if there's any pending delta, fold it |
---|
241 | | - * into the pending NO_HZ delta. |
---|
242 | | - */ |
---|
243 | | - delta = calc_load_fold_active(this_rq, 0); |
---|
| 238 | + delta = calc_load_fold_active(rq, 0); |
---|
244 | 239 | if (delta) { |
---|
245 | 240 | int idx = calc_load_write_idx(); |
---|
246 | 241 | |
---|
247 | 242 | atomic_long_add(delta, &calc_load_nohz[idx]); |
---|
248 | 243 | } |
---|
| 244 | +} |
---|
| 245 | + |
---|
| 246 | +void calc_load_nohz_start(void) |
---|
| 247 | +{ |
---|
| 248 | + /* |
---|
| 249 | + * We're going into NO_HZ mode, if there's any pending delta, fold it |
---|
| 250 | + * into the pending NO_HZ delta. |
---|
| 251 | + */ |
---|
| 252 | + calc_load_nohz_fold(this_rq()); |
---|
| 253 | +} |
---|
| 254 | + |
---|
| 255 | +/* |
---|
| 256 | + * Keep track of the load for NOHZ_FULL, must be called between |
---|
| 257 | + * calc_load_nohz_{start,stop}(). |
---|
| 258 | + */ |
---|
| 259 | +void calc_load_nohz_remote(struct rq *rq) |
---|
| 260 | +{ |
---|
| 261 | + calc_load_nohz_fold(rq); |
---|
249 | 262 | } |
---|
250 | 263 | |
---|
251 | 264 | void calc_load_nohz_stop(void) |
---|
.. | .. |
---|
268 | 281 | this_rq->calc_load_update += LOAD_FREQ; |
---|
269 | 282 | } |
---|
270 | 283 | |
---|
271 | | -static long calc_load_nohz_fold(void) |
---|
| 284 | +static long calc_load_nohz_read(void) |
---|
272 | 285 | { |
---|
273 | 286 | int idx = calc_load_read_idx(); |
---|
274 | 287 | long delta = 0; |
---|
.. | .. |
---|
323 | 336 | } |
---|
324 | 337 | #else /* !CONFIG_NO_HZ_COMMON */ |
---|
325 | 338 | |
---|
326 | | -static inline long calc_load_nohz_fold(void) { return 0; } |
---|
| 339 | +static inline long calc_load_nohz_read(void) { return 0; } |
---|
327 | 340 | static inline void calc_global_nohz(void) { } |
---|
328 | 341 | |
---|
329 | 342 | #endif /* CONFIG_NO_HZ_COMMON */ |
---|
.. | .. |
---|
334 | 347 | * |
---|
335 | 348 | * Called from the global timer code. |
---|
336 | 349 | */ |
---|
337 | | -void calc_global_load(unsigned long ticks) |
---|
| 350 | +void calc_global_load(void) |
---|
338 | 351 | { |
---|
339 | 352 | unsigned long sample_window; |
---|
340 | 353 | long active, delta; |
---|
.. | .. |
---|
346 | 359 | /* |
---|
347 | 360 | * Fold the 'old' NO_HZ-delta to include all NO_HZ CPUs. |
---|
348 | 361 | */ |
---|
349 | | - delta = calc_load_nohz_fold(); |
---|
| 362 | + delta = calc_load_nohz_read(); |
---|
350 | 363 | if (delta) |
---|
351 | 364 | atomic_long_add(delta, &calc_load_tasks); |
---|
352 | 365 | |
---|