pinebuds/services/bt_profiles_enhanced/inc/cobuf.h
2022-08-15 17:20:27 +08:00

89 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