嵌入式操作系统内核原理和开发(最快、最优、最差内存分配算法)

发表于:2012-6-28 10:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:feixiaoxing    来源:51Testing软件测试网采编

分享:

/*************************************************
* function: implement memory free
**************************************************/

static void _mem_free(MNG_NODE* pNode)
{
    MNG_NODE* pPreNode;

    if(pNode == pAllocList)
    {
        pAllocList = pAllocList->next;
        add_node_into_list_head(pNode, &pFreeList);
        return;
    }   

    pPreNode = find_previous_node_in_list(pNode, pAllocList);
    if(NULL == pPreNode)
        return;

    pPreNode->next = pNode->next;
    add_node_into_list_head(pNode, &pFreeList);
    return;
}


/*************************************************
* function: free memory function
**************************************************/

void mem_free(void* pData)
{
    if(NULL == pData)
        return;

    if(pData < pGlbData || pData >= (void*)((char*)pGlbData + MEM_BUFFER_LENGTH))
        return;

    _mem_free((MNG_NODE*)((char*)pData - sizeof(MNG_NODE)));
}


/*************************************************
* function: get memory buffer
**************************************************/

void mem_init()
{
    pGlbData = (void*)malloc(MEM_BUFFER_LENGTH);
    if(NULL == pGlbData)
        return;

    memset(pGlbData, 0, MEM_BUFFER_LENGTH);
    pFreeList = (MNG_NODE*)pGlbData;
    pFreeList->size = MEM_BUFFER_LENGTH - sizeof(MNG_NODE);
    pAllocList = NULL;
}


/*************************************************
* function: free memory buffer
**************************************************/

void mem_exit()
{
    if(NULL != pGlbData)
        free(pGlbData);  

    pFreeList = NULL;
    pAllocList = NULL;
}


/*************************************************
* function: file starts here
**************************************************/

int main(int argc, char* argv[])
{
    mem_init();
    mem_exit();
    return 1;
}

相关链接:

嵌入式操作系统内核原理和开发(开篇)

嵌入式操作系统内核原理和开发(cpu的那些事)

嵌入式操作系统内核原理和开发(中断)

嵌入式操作系统内核原理和开发(地址空间)

嵌入式操作系统内核原理和开发(系统中断仿真)

嵌入式操作系统内核原理和开发(线程切换)

嵌入式操作系统内核原理和开发(任务创建和堆栈溢出检查)

嵌入式操作系统内核原理和开发(多线程轮转)

嵌入式操作系统内核原理和开发(通用优先级调度)

嵌入式操作系统内核原理和开发(抢占式优先级调度)

嵌入式操作系统内核原理和开发(头文件调整)

嵌入式操作系统内核原理和开发(内存分配算法)

嵌入式操作系统内核原理和开发(固定内存分配算法)

嵌入式操作系统内核原理和开发(基于链表节点的内存分配算法)

44/4<1234
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号