123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /*
- * Copyright (c) 2006-2021, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- *
- */
- #include <rtthread.h>
- #include "tc_comm.h"
- /*
- * This is an example for heap malloc
- */
- static rt_bool_t mem_check(rt_uint8_t *ptr, rt_uint8_t value, rt_uint32_t len)
- {
- while (len)
- {
- if (*ptr != value) return RT_FALSE;
- ptr ++;
- len --;
- }
- return RT_TRUE;
- }
- static void heap_realloc_init()
- {
- rt_uint8_t res = TC_STAT_PASSED;
- rt_uint8_t *ptr1, *ptr2, *ptr3, *ptr4, *ptr5;
- ptr1 = rt_malloc(1);
- ptr2 = rt_malloc(13);
- ptr3 = rt_malloc(31);
- ptr4 = rt_malloc(127);
- ptr5 = rt_malloc(0);
- memset(ptr1, 1, 1);
- memset(ptr2, 2, 13);
- memset(ptr3, 3, 31);
- memset(ptr4, 4, 127);
- if (mem_check(ptr1, 1, 1) == RT_FALSE)
- {
- res = TC_STAT_FAILED;
- goto _free;
- }
- if (mem_check(ptr2, 2, 13) == RT_FALSE)
- {
- res = TC_STAT_FAILED;
- goto _free;
- }
- if (mem_check(ptr3, 3, 31) == RT_FALSE)
- {
- res = TC_STAT_FAILED;
- goto _free;
- }
- if (mem_check(ptr4, 4, 127) == RT_FALSE)
- {
- res = TC_STAT_FAILED;
- goto _free;
- }
- ptr1 = rt_realloc(ptr1, 13);
- ptr2 = rt_realloc(ptr2, 31);
- ptr3 = rt_realloc(ptr3, 127);
- ptr4 = rt_realloc(ptr4, 1);
- ptr5 = rt_realloc(ptr5, 0);
- if (ptr5)
- {
- rt_kprintf("realloc(ptr, 0) should return NULL\n");
- res = TC_STAT_FAILED;
- }
- if (mem_check(ptr1, 1, 1) == RT_FALSE)
- res = TC_STAT_FAILED;
- if (mem_check(ptr2, 2, 13) == RT_FALSE)
- res = TC_STAT_FAILED;
- if (mem_check(ptr3, 3, 31) == RT_FALSE)
- res = TC_STAT_FAILED;
- if (mem_check(ptr4, 4, 1) == RT_FALSE)
- res = TC_STAT_FAILED;
- _free:
- rt_free(ptr4);
- rt_free(ptr3);
- rt_free(ptr2);
- rt_free(ptr1);
- tc_done(res);
- }
- #ifdef RT_USING_TC
- int _tc_heap_realloc()
- {
- heap_realloc_init();
- return 0;
- }
- FINSH_FUNCTION_EXPORT(_tc_heap_realloc, a heap re-malloc test);
- #else
- int rt_application_init()
- {
- heap_realloc_init();
- return 0;
- }
- #endif
|