Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes16kdownloads
memdebug.h83 linesDownload Raw Back to utils
1/*-------------------------------------------------------------------------2 *3 * memdebug.h4 *	  Memory debugging support.5 *6 * Currently, this file either wraps <valgrind/memcheck.h> or substitutes7 * empty definitions for Valgrind client request macros we use.8 *9 *10 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group11 * Portions Copyright (c) 1994, Regents of the University of California12 *13 * src/include/utils/memdebug.h14 *15 *-------------------------------------------------------------------------16 */17#ifndef MEMDEBUG_H18#define MEMDEBUG_H19 20#ifdef USE_VALGRIND21#include <valgrind/memcheck.h>22#else23#define VALGRIND_CHECK_MEM_IS_DEFINED(addr, size)			do {} while (0)24#define VALGRIND_CREATE_MEMPOOL(context, redzones, zeroed)	do {} while (0)25#define VALGRIND_DESTROY_MEMPOOL(context)					do {} while (0)26#define VALGRIND_MAKE_MEM_DEFINED(addr, size)				do {} while (0)27#define VALGRIND_MAKE_MEM_NOACCESS(addr, size)				do {} while (0)28#define VALGRIND_MAKE_MEM_UNDEFINED(addr, size)				do {} while (0)29#define VALGRIND_MEMPOOL_ALLOC(context, addr, size)			do {} while (0)30#define VALGRIND_MEMPOOL_FREE(context, addr)				do {} while (0)31#define VALGRIND_MEMPOOL_CHANGE(context, optr, nptr, size)	do {} while (0)32#endif33 34 35#ifdef CLOBBER_FREED_MEMORY36 37/* Wipe freed memory for debugging purposes */38static inline void39wipe_mem(void *ptr, size_t size)40{41	VALGRIND_MAKE_MEM_UNDEFINED(ptr, size);42	memset(ptr, 0x7F, size);43	VALGRIND_MAKE_MEM_NOACCESS(ptr, size);44}45 46#endif							/* CLOBBER_FREED_MEMORY */47 48#ifdef MEMORY_CONTEXT_CHECKING49 50static inline void51set_sentinel(void *base, Size offset)52{53	char	   *ptr = (char *) base + offset;54 55	VALGRIND_MAKE_MEM_UNDEFINED(ptr, 1);56	*ptr = 0x7E;57	VALGRIND_MAKE_MEM_NOACCESS(ptr, 1);58}59 60static inline bool61sentinel_ok(const void *base, Size offset)62{63	const char *ptr = (const char *) base + offset;64	bool		ret;65 66	VALGRIND_MAKE_MEM_DEFINED(ptr, 1);67	ret = *ptr == 0x7E;68	VALGRIND_MAKE_MEM_NOACCESS(ptr, 1);69 70	return ret;71}72 73#endif							/* MEMORY_CONTEXT_CHECKING */74 75#ifdef RANDOMIZE_ALLOCATED_MEMORY76 77void		randomize_mem(char *ptr, size_t size);78 79#endif							/* RANDOMIZE_ALLOCATED_MEMORY */80 81 82#endif							/* MEMDEBUG_H */83 
codekingpro/portable-devtools · Team Ai