summaryrefslogtreecommitdiff
path: root/src/memheap.c
diff options
context:
space:
mode:
authortangyuxin <[email protected]>2022-09-19 18:02:25 +0800
committerMan, Jianting (Meco) <[email protected]>2022-09-19 23:30:44 -0400
commit655beb3bda6df14368aac83a0614684ce5f7d5c5 (patch)
treea3b288ec2d0811969dce9281df7fbdbf4a07a872 /src/memheap.c
parent90d9b449b1c7eb370545244c26e2d92446b42d84 (diff)
[memheap] Fix the Oz optimization problem of AC6 compiler
Diffstat (limited to 'src/memheap.c')
-rw-r--r--src/memheap.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/memheap.c b/src/memheap.c
index 71e43580f4..85f4899116 100644
--- a/src/memheap.c
+++ b/src/memheap.c
@@ -38,7 +38,7 @@
#define MEMITEM_SIZE(item) ((rt_ubase_t)item->next - (rt_ubase_t)item - RT_MEMHEAP_SIZE)
#define MEMITEM(ptr) (struct rt_memheap_item*)((rt_uint8_t*)ptr - RT_MEMHEAP_SIZE)
-static void _remove_next_ptr(struct rt_memheap_item *next_ptr)
+static void _remove_next_ptr(volatile struct rt_memheap_item *next_ptr)
{
/* Fix the crash problem after opening Oz optimization on ac6 */
/* Fix IAR compiler warning */
@@ -392,7 +392,7 @@ void *rt_memheap_realloc(struct rt_memheap *heap, void *ptr, rt_size_t newsize)
if (newsize > oldsize)
{
void *new_ptr;
- struct rt_memheap_item *next_ptr;
+ volatile struct rt_memheap_item *next_ptr;
if (heap->locked == RT_FALSE)
{
@@ -980,6 +980,8 @@ int memheaptrace(int argc, char *argv[])
rt_kprintf("%5d", block_size);
else if (block_size < 1024 * 1024)
rt_kprintf("%4dK", block_size / 1024);
+ else if (block_size < 1024 * 1024 * 100)
+ rt_kprintf("%2d.%dM", block_size / (1024 * 1024), (block_size % (1024 * 1024) * 10) / (1024 * 1024));
else
rt_kprintf("%4dM", block_size / (1024 * 1024));
/* dump thread name */