函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:mm\vmscan.c Create Date:2022-07-27 15:44:05
Last Modify:2022-05-23 13:41:30 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:A zone is low on free memory or too fragmented for high-order memory

函数原型:void wakeup_kswapd(struct zone *zone, gfp_t gfp_flags, int order, enum zone_type classzone_idx)

返回类型:void

参数:

类型参数名称
struct zone *zone
gfp_tgfp_flags
intorder
enum zone_typeclasszone_idx
3973  如果非Returns true if a zone has pages managed by the buddy allocator.* All the reclaim decisions have to use this function rather than* populated_zone(). If the whole zone is reserved then we can easily* end up with populated_zone() && !managed_zone().则返回
3976  如果非cpuset_zone_allowed(zone, gfp_flags)则返回
3978  pgdat等于建立内存域和父结点之间的关联
3980  如果kswapd_classzone_idx恒等于MAX_NR_ZONESkswapd_classzone_idx等于classzone_idx
3982  否则kswapd_classzone_idx等于两数取大(kswapd_classzone_idx, classzone_idx)
3985  kswapd_order等于两数取大(kswapd_order, order)
3986  如果非waitqueue_active -- locklessly test for waiters on the queue*@wq_head: the waitqueue to test for waiters* returns true if the wait list is not empty* NOTE: this function is lockless and requires care, incorrect usage _will_则返回
3990  如果 Number of 'reclaimed == 0' runs 大于等于Maximum number of reclaim retries without progress before the OOM* killer is consider the only way forward.Returns true if there is an eligible zone balanced for the request order* and classzone_idx且非pgdat_watermark_boosted(pgdat, classzone_idx)则
4000  如果非gfp_flags按位与Caller can reclaim 的值则wakeup_kcompactd(pgdat, order, classzone_idx)
4002  返回
4005  trace_mm_vmscan_wakeup_kswapd(全局结点ID, classzone_idx, order, gfp_flags)
4007  wake_up_interruptible( & 交换守护进程的等待队列)
调用者
名称描述
rmqueueAllocate a page from the given zone. Use pcplists for order-0 allocations.
wake_all_kswapds