这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » memPartFree and taskSuspend

共1条 1/1 1 跳转至

memPartFree and taskSuspend

菜鸟
2003-01-17 01:31:59     打赏
Anyone know why memPartFree would ever call taskSuspend? I am using standard malloc and free pairs, but occasionally I get a suspended task. When I use "tt" to get a trace, it shows free calling memPartFree and then memPartFree calling taskSuspend. If I knew what conditions caused memPartFree to call suspend I might be able to figure out whats happening. Thanks, bryan Hello, memPartFree and memPartAlloc can both suspend the calling task in cases where there is an allocation error (as long as the task is breakable - see taskLib for information on breakable and non-breakable tasks). For the case where memPartFree does this, it is usually the result of corruption on your heap. There is a small header just in front of every allocated block that tells the partition library how big the block is, and also contains some pointer information needed to manage the partition. Corrupting one of these headers can cause memPartFree to suspend the task. Also, trying to free memory that was not allocated using memPartAlloc will do this. If you don't like this behaviour, then you can change the options for the partition (see memPartLib's reference manual for information). Before doing that though, you need to work out what in your code is corrupting the heap! That can be a daunting task, especially since it is likely that the cause of the problem is the code using the block allocated just in front of the one you are trying to free, and the not the code that is being suspended. You might want to look into some tools that could help you here if you don't find the problem quickly. RTI have a tool that does this (MemScope), and there are other companies out there with these tools too (check on comp.os.vxworks for other suggestions - this comes up on there every now and again). HTH, John...



关键词: memPartFree     taskSuspend    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]