函数源码

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source File:lib\btree.c Create Date:2022-07-27 07:50:45
首页 Copyright©Brick

675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
static size_t __btree_for_each(struct btree_head *head, struct btree_geo *geo,
                   unsigned long *node, unsigned long opaque,
                   void (*func)(void *elem, unsigned long opaque,
                        unsigned long *key, size_t index,
                        void *func2),
                   void *func2, int reap, int height, size_t count)
{
    int i;
    unsigned long *child;
 
    for (i = 0; i < geo->no_pairs; i++) {
        child = bval(geo, node, i);
        if (!child)
            break;
        if (height > 1)
            count = __btree_for_each(head, geo, child, opaque,
                    func, func2, reap, height - 1, count);
        else
            func(child, opaque, bkey(geo, node, i), count++,
                    func2);
    }
    if (reap)
        mempool_free(node, head->mempool);
    return count;
}