Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef SHMEM_H
00022 #define SHMEM_H
00023
00024 #include "utils/hsearch.h"
00025
00026
00027
00028 typedef struct SHM_QUEUE
00029 {
00030 struct SHM_QUEUE *prev;
00031 struct SHM_QUEUE *next;
00032 } SHM_QUEUE;
00033
00034
00035 extern void InitShmemAccess(void *seghdr);
00036 extern void InitShmemAllocation(void);
00037 extern void *ShmemAlloc(Size size);
00038 extern bool ShmemAddrIsValid(const void *addr);
00039 extern void InitShmemIndex(void);
00040 extern HTAB *ShmemInitHash(const char *name, long init_size, long max_size,
00041 HASHCTL *infoP, int hash_flags);
00042 extern void *ShmemInitStruct(const char *name, Size size, bool *foundPtr);
00043 extern Size add_size(Size s1, Size s2);
00044 extern Size mul_size(Size s1, Size s2);
00045
00046
00047 extern void RequestAddinShmemSpace(Size size);
00048
00049
00050
00051 #define SHMEM_INDEX_KEYSIZE (48)
00052
00053 #define SHMEM_INDEX_SIZE (64)
00054
00055
00056 typedef struct
00057 {
00058 char key[SHMEM_INDEX_KEYSIZE];
00059 void *location;
00060 Size size;
00061 } ShmemIndexEnt;
00062
00063
00064
00065
00066 extern void SHMQueueInit(SHM_QUEUE *queue);
00067 extern void SHMQueueElemInit(SHM_QUEUE *queue);
00068 extern void SHMQueueDelete(SHM_QUEUE *queue);
00069 extern void SHMQueueInsertBefore(SHM_QUEUE *queue, SHM_QUEUE *elem);
00070 extern void SHMQueueInsertAfter(SHM_QUEUE *queue, SHM_QUEUE *elem);
00071 extern Pointer SHMQueueNext(const SHM_QUEUE *queue, const SHM_QUEUE *curElem,
00072 Size linkOffset);
00073 extern Pointer SHMQueuePrev(const SHM_QUEUE *queue, const SHM_QUEUE *curElem,
00074 Size linkOffset);
00075 extern bool SHMQueueEmpty(const SHM_QUEUE *queue);
00076 extern bool SHMQueueIsDetached(const SHM_QUEUE *queue);
00077
00078 #endif