函数源码

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source File:mm\hugetlb.c Create Date:2022-07-27 16:56:18
首页 Copyright©Brick

541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
/*
 * Count and return the number of huge pages in the reserve map
 * that intersect with the range [f, t).
 */
static long region_count(struct resv_map *resv, long f, long t)
{
    struct list_head *head = &resv->regions;
    struct file_region *rg;
    long chg = 0;
 
    spin_lock(&resv->lock);
    /* Locate each segment we overlap with, and count that overlap. */
    list_for_each_entry(rg, head, link) {
        long seg_from;
        long seg_to;
 
        if (rg->to <= f)
            continue;
        if (rg->from >= t)
            break;
 
        seg_from = max(rg->from, f);
        seg_to = min(rg->to, t);
 
        chg += seg_to - seg_from;
    }
    spin_unlock(&resv->lock);
 
    return chg;
}