/* Copyright (c) 1993 Xerox Corporation. All rights reserved. */ /* */ #ifndef ←←XR←sys←shm←h #define ←←XR←sys←shm←h #include <config/PCR←OS.h> #include <xr/XR←sys←types.h> #include <xr/XR←sys←ipc.h> #include <sys/shm.h> /* * Shared Memory Operation Flags. */ #define XR←SHM←RDONLY 010000 /* attach read-only (else read-write) */ #define XR←SHM←RND 020000 /* round attach address to SHMLBA */ /* * Shmctl Command Definitions. */ #define XR←SHM←LOCK 3 /* Lock segment in core */ #define XR←SHM←UNLOCK 4 /* Unlock segment */ /* * Implementation Constants. */ #define XR←SHMLBA 0x1000 /* segment low boundary address multiple */ /* (SHMLBA must be a power of 2) */ /* * Structure Definitions. */ /* * There is a shared mem id data structure for each segment in the system. */ struct XR←shmid←ds { struct XR←ipc←perm shm←perm; /* operation permission struct */ unsigned int shm←segsz; /* size of segment in bytes */ unsigned short shm←lpid; /* pid of last shmop */ unsigned short shm←cpid; /* pid of creator */ unsigned short shm←nattch; /* number of current attaches */ XR←time←t shm←atime; /* last shmat time */ XR←time←t shm←dtime; /* last shmdt time */ XR←time←t shm←ctime; /* last change time */ void *shm←amp; /* segment anon←map pointer */ }; #if defined(PCR←OS←SUNOS4) # define XR←sys←shm←FlagsToHost(flags) (flags) # define XR←sys←shm←CmdToHost(cmd) (cmd) extern void XR←sys←shm←DSToHost(struct shmid←ds *hds, struct XR←shmid←ds *xds); extern void XR←sys←shm←DSFromHost(struct XR←shmid←ds *xds, struct shmid←ds *hds); #elif defined(PCR←OS←SUNOS5) # define XR←sys←shm←FlagsToHost(flags) (flags) extern int XR←sys←shm←CmdToHost(int cmd); extern void XR←sys←shm←DSToHost(struct shmid←ds *hds, struct XR←shmid←ds *xds); extern void XR←sys←shm←DSFromHost(struct XR←shmid←ds *xds, struct shmid←ds *hds); #else # error os ? #endif #endif /*!←←XR←sys←shm←h*/