zoukankan      html  css  js  c++  java
  • request_resource

    1.全局变量

    resource结构体定义如下,指针parent、sibling、child用于构建树状结构。

    struct resource {
        resource_size_t start;
        resource_size_t end;
        const char *name;
        unsigned long flags;
        struct resource *parent, *sibling, *child;
    };

    用到的全局变量

    /arch/arm/kernel/setup.c/
    static struct resource mem_res[] = {
        {
            .name = "Video RAM",
            .start = 0,
            .end = 0,
            .flags = IORESOURCE_MEM
        },
        {
            .name = "Kernel text",
            .start = 0,
            .end = 0,
            .flags = IORESOURCE_MEM
        },
        {
            .name = "Kernel data",
            .start = 0,
            .end = 0,
            .flags = IORESOURCE_MEM
        }
    };
    
    #define video_ram   mem_res[0]
    #define kernel_code mem_res[1]
    #define kernel_data mem_res[2]

    2.request_resource()

    int request_resource(struct resource *root, struct resource *new)
        -->__request_resource(root, new);//按地址升序排列
    /* Return the conflict entry if you can't request it */
    static struct resource * __request_resource(struct resource *root, struct resource *new)
    {
        resource_size_t start = new->start;
        resource_size_t end = new->end;
        struct resource *tmp, **p;
    
        if (end < start)
            return root;
        if (start < root->start)
            return root;
        if (end > root->end)
            return root;
        p = &root->child;
        for (;;) {
            tmp = *p;
            if (!tmp || tmp->start > end) {
                new->sibling = tmp;
                *p = new;
                new->parent = root;
                return NULL;
            }
            p = &tmp->sibling;
            if (tmp->end < start)
                continue;
            return tmp;
        }
    }
  • 相关阅读:
    菜鸟fork()创建进程新见解
    Linux下select函数的使用
    URAL 1029 Ministry
    URAL 1036 Lucky Tickets
    URAL 1031 Railway Tickets
    URAL 1028 Stars
    URAL 1032 Find a Multiple
    URAL 1037 Memory Management
    URAL 1033 Labyrinth
    URAL 1039 Anniversary Party
  • 原文地址:https://www.cnblogs.com/yangjiguang/p/9490389.html
Copyright © 2011-2022 走看看