131 lines
3.1 KiB
C
131 lines
3.1 KiB
C
/**
|
||
* @file cm_mem.h
|
||
* @brief 内存管理
|
||
* @copyright Copyright © 2021 China Mobile IOT. All rights reserved.
|
||
* @author By ljw
|
||
* @date 2021/05/28
|
||
*
|
||
* @defgroup mem mem
|
||
* @ingroup SYS
|
||
* @{
|
||
*/
|
||
|
||
#ifndef __CM_MEM_H__
|
||
#define __CM_MEM_H__
|
||
|
||
/****************************************************************************
|
||
* Included Files
|
||
****************************************************************************/
|
||
#include "stdint.h"
|
||
#include "stddef.h"
|
||
|
||
/**
|
||
* @ingroup cm_mem 内存管理
|
||
* @{
|
||
*/
|
||
|
||
/****************************************************************************
|
||
* Pre-processor Definitions
|
||
****************************************************************************/
|
||
|
||
/****************************************************************************
|
||
* Public Types
|
||
****************************************************************************/
|
||
|
||
/** heap状态 */
|
||
typedef struct{
|
||
uint32_t total_size; /*!< 总量大小 */
|
||
uint32_t allocated; /*!< 目前已分配大小 */
|
||
uint32_t free; /*!< 剩余可分配大小 */
|
||
uint32_t max_continuity_free; /*!< 本平台无效 */
|
||
uint32_t allocated_peak; /*!< 本平台无效 */
|
||
uint32_t allocated_times; /*!< 本平台无效 */
|
||
uint32_t free_times; /*!< 本平台无效 */
|
||
} cm_heap_stats_t;
|
||
|
||
/****************************************************************************
|
||
* Public Data
|
||
****************************************************************************/
|
||
|
||
|
||
/****************************************************************************
|
||
* Public Function Prototypes
|
||
****************************************************************************/
|
||
|
||
#ifdef __cplusplus
|
||
#define EXTERN extern "C"
|
||
extern "C"
|
||
{
|
||
#else
|
||
#define EXTERN extern
|
||
#endif
|
||
|
||
/**
|
||
* @brief 获取目前系统heap状态
|
||
*
|
||
* @param [out] stats heap状态
|
||
*
|
||
* @return
|
||
* = 0 - 成功 \n
|
||
* < 0 - 失败, 返回值为错误码
|
||
*
|
||
* @details 获取的为MemPool信息
|
||
*/
|
||
int32_t cm_mem_get_heap_stats(cm_heap_stats_t *stats);
|
||
|
||
/**
|
||
* @brief 申请内存
|
||
*
|
||
* @param [in] size 申请长度
|
||
*
|
||
* @return 返回内存地址
|
||
*
|
||
* @details 内存操作接口请勿使用C库接口,申请长度不能超过剩余可分配大小
|
||
*/
|
||
void *cm_malloc(size_t size);
|
||
|
||
/**
|
||
* @brief 申请内存
|
||
*
|
||
* @param [in] ptr 待重新分配的内存块
|
||
* @param [in] size 内存块的新大小
|
||
*
|
||
* @return 返回内存地址
|
||
*
|
||
* @details 内存操作接口请勿使用C库接口,申请长度不能超过剩余可分配大小
|
||
*/
|
||
void *cm_realloc(void *ptr, size_t size);
|
||
|
||
/**
|
||
* @brief 申请内存
|
||
*
|
||
* @param [in] nitems 要被分配的元素个数
|
||
* @param [in] size 元素的大小
|
||
*
|
||
* @return 返回内存地址
|
||
*
|
||
* @details 内存操作接口请勿使用C库接口,申请长度不能超过剩余可分配大小
|
||
*/
|
||
void *cm_calloc(size_t nitems, size_t size);
|
||
|
||
/**
|
||
* @brief 释放内存
|
||
*
|
||
* @param [in] buf 待释放内存
|
||
*
|
||
* @return 空
|
||
*
|
||
* @details 内存操作接口请勿使用C库接口
|
||
*/
|
||
void cm_free(void *ptr);
|
||
|
||
#undef EXTERN
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
/** @}*/
|
||
|
||
#endif /* __CM_MEM_H__ */
|
||
|