#ifndef SHMEM_H
#define SHMEM_H
#include "utils/hsearch.h"
extern void InitShmemAccess(void *seghdr);
extern void InitShmemAllocation(void);
extern void *ShmemAlloc(Size size);
extern void *ShmemAllocNoError(Size size);
extern void *ShmemAllocUnlocked(Size size);
extern bool ShmemAddrIsValid(const void *addr);
extern void InitShmemIndex(void);
extern HTAB *ShmemInitHash(const char *name, long init_size, long max_size,
HASHCTL *infoP, int hash_flags);
extern void *ShmemInitStruct(const char *name, Size size, bool *foundPtr);
extern Size add_size(Size s1, Size s2);
extern Size mul_size(Size s1, Size s2);
extern void RequestAddinShmemSpace(Size size);
#define SHMEM_INDEX_KEYSIZE (48)
#define SHMEM_INDEX_SIZE (64)
typedef struct
{
char key[SHMEM_INDEX_KEYSIZE];
void *location;
Size size;
Size allocated_size;
} ShmemIndexEnt;
#endif