90 lines
2.6 KiB
C
90 lines
2.6 KiB
C
/***************************************************************************
|
|
*
|
|
* Copyright 2015-2019 BES.
|
|
* All rights reserved. All unpublished rights reserved.
|
|
*
|
|
* No part of this work may be used or reproduced in any form or by any
|
|
* means, or stored in a database or retrieval system, without prior written
|
|
* permission of BES.
|
|
*
|
|
* Use of this work is governed by a license granted by BES.
|
|
* This work contains confidential and proprietary information of
|
|
* BES. which is protected by copyright, trade secret,
|
|
* trademark and other intellectual property rights.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifndef _COBUF_H
|
|
#define _COBUF_H
|
|
#include "bt_sys_cfg.h"
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*must be 4 align*/
|
|
struct cobuf_statistic_packet
|
|
{
|
|
unsigned short stat_flag; /*must be 0x5a5a if used, or 0xa5a5 if released*/
|
|
unsigned short alloc_place_id;
|
|
unsigned short block_index;
|
|
unsigned short realsize;
|
|
};
|
|
|
|
struct cobuf_base
|
|
{
|
|
struct cobuf_base *link;
|
|
#if DBG_COBUF_NEED_STATISTIC == 1
|
|
struct cobuf_statistic_packet statistic;
|
|
#endif
|
|
unsigned char buf[2];
|
|
};
|
|
|
|
void init_buf( struct cobuf_base **head,
|
|
struct cobuf_base *first,
|
|
int elm_size,
|
|
int buf_num);
|
|
unsigned char* alloc_buf(struct cobuf_base **head_ptr);
|
|
unsigned char* alloc_buf_infiq(struct cobuf_base **head_ptr);
|
|
void free_buf(unsigned char *buf);
|
|
|
|
void cobuf_init(void);
|
|
|
|
#if DBG_COBUF_NEED_STATISTIC == 1
|
|
#define DBG_COBUF_STATISTIC_PLACE_RECORD_ENABLE 1
|
|
#define DBG_COBUF_STATISTIC_PLACE_RECORD_OPTIMIZE_ENABLE 1
|
|
|
|
unsigned char *_cobuf_malloc_with_statistic(int size, char *module_str, int line);
|
|
unsigned char *_cobuf_malloc_with_statistic_infiq(int size, char *module_str, int line);
|
|
void _cobuf_free_with_statistic(unsigned char *buf);
|
|
|
|
#if BA_GCC==1
|
|
#define __CO_MODULE __func__
|
|
#endif
|
|
|
|
#define cobuf_malloc(size) _cobuf_malloc_with_statistic(size,(char *)__CO_MODULE,__LINE__)
|
|
#define cobuf_malloc_infiq(size) _cobuf_malloc_with_statistic_infiq(size,(char *)__CO_MODULE,__LINE__)
|
|
#define cobuf_free(buf) _cobuf_free_with_statistic(buf);
|
|
|
|
#else
|
|
|
|
unsigned char *_cobuf_malloc(int size);
|
|
unsigned char *_cobuf_malloc_infiq(int size);
|
|
void _cobuf_free(unsigned char *buf);
|
|
#define cobuf_malloc(size) _cobuf_malloc(size)
|
|
#define cobuf_malloc_infiq(size) _cobuf_malloc_infiq(size)
|
|
#define cobuf_free(buf) _cobuf_free(buf)
|
|
|
|
#endif
|
|
|
|
unsigned char *cobuf_zmalloc(int size);
|
|
void cobuf_print_statistic(void);
|
|
void cobuf_print_block_statistic(void);
|
|
void cobuf_print_place_statistic(void);
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
#endif
|