⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memutils.h

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 H
字号:
/*------------------------------------------------------------------------- * * memutils.h *	  This file contains declarations for memory allocation utility *	  functions.  These are functions that are not quite widely used *	  enough to justify going in utils/palloc.h, but are still part *	  of the API of the memory management subsystem. * * * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $PostgreSQL: pgsql/src/include/utils/memutils.h,v 1.59 2004/12/31 22:03:46 pgsql Exp $ * *------------------------------------------------------------------------- */#ifndef MEMUTILS_H#define MEMUTILS_H#include "nodes/memnodes.h"/* * MaxAllocSize *		Quasi-arbitrary limit on size of allocations. * * Note: *		There is no guarantee that allocations smaller than MaxAllocSize *		will succeed.  Allocation requests larger than MaxAllocSize will *		be summarily denied. * * XXX This is deliberately chosen to correspond to the limiting size * of varlena objects under TOAST.	See VARATT_MASK_SIZE in postgres.h. * * XXX Also, various places in aset.c assume they can compute twice an * allocation's size without overflow, so beware of raising this. */#define MaxAllocSize	((Size) 0x3fffffff)		/* 1 gigabyte - 1 */#define AllocSizeIsValid(size)	((Size) (size) <= MaxAllocSize)/* * All chunks allocated by any memory context manager are required to be * preceded by a StandardChunkHeader at a spacing of STANDARDCHUNKHEADERSIZE. * A currently-allocated chunk must contain a backpointer to its owning * context as well as the allocated size of the chunk.	The backpointer is * used by pfree() and repalloc() to find the context to call.	The allocated * size is not absolutely essential, but it's expected to be needed by any * reasonable implementation. */typedef struct StandardChunkHeader{	MemoryContext context;		/* owning context */	Size		size;			/* size of data space allocated in chunk */#ifdef MEMORY_CONTEXT_CHECKING	/* when debugging memory usage, also store actual requested size */	Size		requested_size;#endif} StandardChunkHeader;#define STANDARDCHUNKHEADERSIZE  MAXALIGN(sizeof(StandardChunkHeader))/* * Standard top-level memory contexts. * * Only TopMemoryContext and ErrorContext are initialized by * MemoryContextInit() itself. */extern DLLIMPORT MemoryContext TopMemoryContext;extern DLLIMPORT MemoryContext ErrorContext;extern DLLIMPORT MemoryContext PostmasterContext;extern DLLIMPORT MemoryContext CacheMemoryContext;extern DLLIMPORT MemoryContext MessageContext;extern DLLIMPORT MemoryContext TopTransactionContext;extern DLLIMPORT MemoryContext CurTransactionContext;/* These two are transient links to contexts owned by other objects: */extern DLLIMPORT MemoryContext QueryContext;extern DLLIMPORT MemoryContext PortalContext;/* * Memory-context-type-independent functions in mcxt.c */extern void MemoryContextInit(void);extern void MemoryContextReset(MemoryContext context);extern void MemoryContextDelete(MemoryContext context);extern void MemoryContextResetChildren(MemoryContext context);extern void MemoryContextDeleteChildren(MemoryContext context);extern void MemoryContextResetAndDeleteChildren(MemoryContext context);extern Size GetMemoryChunkSpace(void *pointer);extern MemoryContext GetMemoryChunkContext(void *pointer);extern bool MemoryContextIsEmpty(MemoryContext context);extern void MemoryContextStats(MemoryContext context);#ifdef MEMORY_CONTEXT_CHECKINGextern void MemoryContextCheck(MemoryContext context);#endifextern bool MemoryContextContains(MemoryContext context, void *pointer);/* * This routine handles the context-type-independent part of memory * context creation.  It's intended to be called from context-type- * specific creation routines, and noplace else. */extern MemoryContext MemoryContextCreate(NodeTag tag, Size size,					MemoryContextMethods *methods,					MemoryContext parent,					const char *name);/* * Memory-context-type-specific functions *//* aset.c */extern MemoryContext AllocSetContextCreate(MemoryContext parent,					  const char *name,					  Size minContextSize,					  Size initBlockSize,					  Size maxBlockSize);/* * Recommended default alloc parameters, suitable for "ordinary" contexts * that might hold quite a lot of data. */#define ALLOCSET_DEFAULT_MINSIZE   0#define ALLOCSET_DEFAULT_INITSIZE  (8 * 1024)#define ALLOCSET_DEFAULT_MAXSIZE   (8 * 1024 * 1024)/* * Recommended alloc parameters for "small" contexts that are not expected * to contain much data (for example, a context to contain a query plan). */#define ALLOCSET_SMALL_MINSIZE	 0#define ALLOCSET_SMALL_INITSIZE  (1 * 1024)#define ALLOCSET_SMALL_MAXSIZE	 (8 * 1024)#endif   /* MEMUTILS_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -