Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

pg_shmem.h

Blame
    • Bruce Momjian's avatar
      0a783200
      pgindent run for 9.4 · 0a783200
      Bruce Momjian authored
      This includes removing tabs after periods in C comments, which was
      applied to back branches, so this change should not effect backpatching.
      0a783200
      History
      pgindent run for 9.4
      Bruce Momjian authored
      This includes removing tabs after periods in C comments, which was
      applied to back branches, so this change should not effect backpatching.
    pg_shmem.h 2.19 KiB
    /*-------------------------------------------------------------------------
     *
     * pg_shmem.h
     *	  Platform-independent API for shared memory support.
     *
     * Every port is expected to support shared memory with approximately
     * SysV-ish semantics; in particular, a memory block is not anonymous
     * but has an ID, and we must be able to tell whether there are any
     * remaining processes attached to a block of a specified ID.
     *
     * To simplify life for the SysV implementation, the ID is assumed to
     * consist of two unsigned long values (these are key and ID in SysV
     * terms).  Other platforms may ignore the second value if they need
     * only one ID number.
     *
     *
     * Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
     * Portions Copyright (c) 1994, Regents of the University of California
     *
     * src/include/storage/pg_shmem.h
     *
     *-------------------------------------------------------------------------
     */
    #ifndef PG_SHMEM_H
    #define PG_SHMEM_H
    
    #include "storage/dsm_impl.h"
    
    typedef struct PGShmemHeader	/* standard header for all Postgres shmem */
    {
    	int32		magic;			/* magic # to identify Postgres segments */
    #define PGShmemMagic  679834894
    	pid_t		creatorPID;		/* PID of creating process */
    	Size		totalsize;		/* total size of segment */
    	Size		freeoffset;		/* offset to first free space */
    	dsm_handle	dsm_control;	/* ID of dynamic shared memory control seg */
    	void	   *index;			/* pointer to ShmemIndex table */
    #ifndef WIN32					/* Windows doesn't have useful inode#s */
    	dev_t		device;			/* device data directory is on */
    	ino_t		inode;			/* inode number of data directory */
    #endif
    } PGShmemHeader;
    
    /* GUC variable */
    extern int	huge_pages;
    
    /* Possible values for huge_pages */
    typedef enum
    {
    	HUGE_PAGES_OFF,
    	HUGE_PAGES_ON,
    	HUGE_PAGES_TRY
    }	HugePagesType;
    
    #ifndef WIN32
    extern unsigned long UsedShmemSegID;
    #else
    extern HANDLE UsedShmemSegID;
    #endif
    extern void *UsedShmemSegAddr;
    
    #ifdef EXEC_BACKEND
    extern void PGSharedMemoryReAttach(void);
    #endif
    
    extern PGShmemHeader *PGSharedMemoryCreate(Size size, bool makePrivate,
    					 int port, PGShmemHeader **shim);
    extern bool PGSharedMemoryIsInUse(unsigned long id1, unsigned long id2);
    extern void PGSharedMemoryDetach(void);
    
    #endif   /* PG_SHMEM_H */