函数源码 |
Source File:kernel\sched\core.c |
Create Date:2022-07-27 10:36:28 |
首页 | Copyright©Brick |
3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 | #ifdef CONFIG_SMP /* rq->lock is NOT held, but preemption is disabled */ static void __balance_callback( struct rq *rq) { struct callback_head *head, *next; void (*func)( struct rq *rq); unsigned long flags; raw_spin_lock_irqsave(&rq->lock, flags); head = rq->balance_callback; rq->balance_callback = NULL; while (head) { func = ( void (*)( struct rq *))head->func; next = head->next; head->next = NULL; head = next; func(rq); } raw_spin_unlock_irqrestore(&rq->lock, flags); } static inline void balance_callback( struct rq *rq) { if (unlikely(rq->balance_callback)) __balance_callback(rq); } #else static inline void balance_callback( struct rq *rq) { } |