TDengine/include/os/osMemory.h

83 lines
2.7 KiB
C
Raw Normal View History

2021-09-22 02:32:42 +00:00
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TD_OS_MEMORY_H_
#define _TD_OS_MEMORY_H_
#ifdef __cplusplus
extern "C" {
#endif
2022-03-25 16:29:53 +00:00
// If the error is in a third-party library, place this header file under the third-party library header file.
// When you want to use this feature, you should find or add the same function in the following sectio
2023-06-05 09:06:50 +00:00
#if !defined(WINDOWS)
2023-06-05 09:06:50 +00:00
#ifndef ALLOW_FORBID_FUNC
#define malloc MALLOC_FUNC_TAOS_FORBID
#define calloc CALLOC_FUNC_TAOS_FORBID
#define realloc REALLOC_FUNC_TAOS_FORBID
#define free FREE_FUNC_TAOS_FORBID
#ifdef strdup
#undef strdup
#define strdup STRDUP_FUNC_TAOS_FORBID
#endif
#endif // ifndef ALLOW_FORBID_FUNC
#endif // if !defined(WINDOWS)
2023-03-28 11:23:24 +00:00
2023-04-17 15:01:41 +00:00
// #define taosMemoryMalloc malloc
// #define taosMemoryCalloc calloc
// #define taosMemoryRealloc realloc
// #define taosMemoryFree free
2022-03-25 16:29:53 +00:00
2023-02-17 09:40:14 +00:00
int32_t taosMemoryDbgInit();
int32_t taosMemoryDbgInitRestore();
2023-04-17 15:01:41 +00:00
void *taosMemoryMalloc(int64_t size);
void *taosMemoryCalloc(int64_t num, int64_t size);
void *taosMemoryRealloc(void *ptr, int64_t size);
char *taosStrdup(const char *ptr);
void taosMemoryFree(void *ptr);
2022-10-13 10:48:06 +00:00
int64_t taosMemorySize(void *ptr);
2022-10-13 03:09:43 +00:00
void taosPrintBackTrace();
2022-10-29 14:25:40 +00:00
void taosMemoryTrim(int32_t size);
void *taosMemoryMallocAlign(uint32_t alignment, int64_t size);
2022-03-25 16:29:53 +00:00
2024-07-16 05:26:26 +00:00
#define TAOS_MEMSET(_s, _c, _n) ((void)memset(_s, _c, _n))
2024-07-16 11:03:12 +00:00
#define TAOS_MEMCPY(_d, _s, _n) ((void)memcpy(_d, _s, _n))
2024-07-18 05:25:56 +00:00
#define TAOS_MEMMOVE(_d, _s, _n) ((void)memmove(_d, _s, _n))
2024-07-16 05:26:26 +00:00
#define taosMemoryFreeClear(ptr) \
do { \
if (ptr) { \
taosMemoryFree((void *)ptr); \
(ptr) = NULL; \
} \
2021-09-22 02:32:42 +00:00
} while (0)
2024-07-23 10:05:56 +00:00
#define TAOS_MEMORY_REALLOC(ptr, len) \
do { \
void *tmp = taosMemoryRealloc(ptr, (len)); \
if (tmp) { \
(ptr) = tmp; \
} else { \
taosMemoryFreeClear(ptr); \
} \
} while (0)
2021-09-22 02:32:42 +00:00
#ifdef __cplusplus
}
#endif
#endif /*_TD_OS_MEMORY_H_*/