137 shmhdr->
freeoffset = aligned - (
char *) shmhdr;
140 shmhdr->
index = NULL;
160 (
errcode(ERRCODE_OUT_OF_MEMORY),
161 errmsg(
"out of shared memory (%zu bytes requested)",
204 *allocated_size =
size;
212 newFree = newStart +
size;
213 if (newFree <= ShmemSegHdr->totalsize)
215 newSpace = (
void *) ((
char *)
ShmemBase + newStart);
253 newFree = newStart +
size;
256 (
errcode(ERRCODE_OUT_OF_MEMORY),
257 errmsg(
"out of shared memory (%zu bytes requested)",
261 newSpace = (
void *) ((
char *)
ShmemBase + newStart);
405 structPtr = shmemseghdr->
index;
420 shmemseghdr->
index = structPtr;
435 (
errcode(ERRCODE_OUT_OF_MEMORY),
436 errmsg(
"could not create ShmemIndex entry for data structure \"%s\"",
451 (
errmsg(
"ShmemIndex entry size is wrong for data structure"
452 " \"%s\": expected %zu, actual %zu",
463 if (structPtr == NULL)
469 (
errcode(ERRCODE_OUT_OF_MEMORY),
470 errmsg(
"not enough shared memory for data structure"
471 " \"%s\" (%zu bytes requested)",
499 if (result <
s1 || result <
s2)
501 (
errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
502 errmsg(
"requested shared memory size overflows size_t")));
514 if (
s1 == 0 ||
s2 == 0)
518 if (result /
s2 !=
s1)
520 (
errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
521 errmsg(
"requested shared memory size overflows size_t")));
529 #define PG_GET_SHMEM_SIZES_COLS 4
533 Size named_allocated = 0;
544 memset(nulls, 0,
sizeof(nulls));
551 named_allocated += ent->allocated_size;
static Datum values[MAXATTR]
#define CStringGetTextDatum(s)
#define CACHELINEALIGN(LEN)
#define Assert(condition)
Size hash_get_shared_size(HASHCTL *info, int flags)
void * hash_search(HTAB *hashp, const void *keyPtr, HASHACTION action, bool *foundPtr)
HTAB * hash_create(const char *tabname, long nelem, const HASHCTL *info, int flags)
long hash_select_dirsize(long num_entries)
void * hash_seq_search(HASH_SEQ_STATUS *status)
void hash_seq_init(HASH_SEQ_STATUS *status, HTAB *hashp)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
Datum Int64GetDatum(int64 X)
void InitMaterializedSRF(FunctionCallInfo fcinfo, bits32 flags)
bool LWLockAcquire(LWLock *lock, LWLockMode mode)
void LWLockRelease(LWLock *lock)
bool ShmemAddrIsValid(const void *addr)
void * ShmemAlloc(Size size)
void * ShmemAllocNoError(Size size)
Datum pg_get_shmem_allocations(PG_FUNCTION_ARGS)
void InitShmemIndex(void)
Size add_size(Size s1, Size s2)
void * ShmemInitStruct(const char *name, Size size, bool *foundPtr)
Size mul_size(Size s1, Size s2)
#define PG_GET_SHMEM_SIZES_COLS
void InitShmemAllocation(void)
static PGShmemHeader * ShmemSegHdr
static void * ShmemAllocRaw(Size size, Size *allocated_size)
HTAB * ShmemInitHash(const char *name, long init_size, long max_size, HASHCTL *infoP, int hash_flags)
void * ShmemAllocUnlocked(Size size)
void InitShmemAccess(void *seghdr)
#define SHMEM_INDEX_KEYSIZE
static pg_noinline void Size size
#define SpinLockInit(lock)
#define SpinLockRelease(lock)
#define SpinLockAcquire(lock)
Tuplestorestate * setResult
void tuplestore_putvalues(Tuplestorestate *state, TupleDesc tdesc, const Datum *values, const bool *isnull)