OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5131|回复: 3

mymalloc中的my_mem_malloc是否需要加临界保护

[复制链接]

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-9-18
在线时间
11 小时
发表于 2015-10-20 14:53:18 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true] //内存分配(内部调用) //memx:所属内存块 //size:要分配的内存大小(字节) //返回值:0XFFFFFFFF,代表错误;其他,内存偏移地址 u32 my_mem_malloc(u8 memx,u32 size) { signed long offset=0; u32 nmemb; //需要的内存块数 u32 cmemb=0;//连续空内存块数 u32 i; if(!mallco_dev.memrdy[memx])mallco_dev.init(memx);//未初始化,先执行初始化 if(size==0)return 0XFFFFFFFF;//不需要分配 nmemb=size/memblksize[memx]; //获取需要分配的连续内存块数 if(size%memblksize[memx])nmemb++; //------------------加入进入临界区----------------------------- OS_CRITICAL_ENTER(); //进入临界区 //----------------------------------------------- for(offset=memtblsize[memx]-1;offset>=0;offset--)//搜索整个内存控制区 { if(!mallco_dev.memmap[memx][offset])cmemb++;//连续空内存块数增加 else cmemb=0; //连续内存块清零 if(cmemb==nmemb) //找到了连续nmemb个空内存块 { for(i=0;i<nmemb;i++) //标注内存块非空 { mallco_dev.memmap[memx][offset+i]=nmemb; } //-----------------加入退出临界区----------------------- OS_CRITICAL_EXIT(); //退出临界区 //----------------------------------------- return (offset*memblksize[memx]);//返回偏移地址 } } //---------------加入退出临界区------------------------- OS_CRITICAL_EXIT(); //退出临界区 //----------------------------------------- return 0XFFFFFFFF;//未找到符合分配条件的内存块 } [/mw_shl_code]

如果不加临界保护,多任务或者中断调用mymalloc()是否可能会出错?

最佳答案

查看完整内容[请看2#楼]

理论上要加的,但是在实际使用中没加过,还没出过问题
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-10-20 14:53:19 | 显示全部楼层
理论上要加的,但是在实际使用中没加过,还没出过问题
开往春天的手扶拖拉机
回复

使用道具 举报

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-9-18
在线时间
11 小时
 楼主| 发表于 2015-10-20 15:00:39 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
那就是要加了
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-7-31
在线时间
5 小时
发表于 2017-12-29 14:54:26 | 显示全部楼层
mymalloc 最大能申请多大的内存?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-19 19:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表