Annotation of cci/sys/h/shm.h, revision 1.1.1.1

1.1       root        1: /* @(#)shm.h   6.1 */
                      2: /*
                      3: **     IPC Shared Memory Facility.
                      4: */
                      5: 
                      6: /*
                      7: **     Implementation Constants.
                      8: */
                      9: 
                     10: #define        SHMLBA  NBPG            /* segment low boundary address multiple */
                     11: #define        P0MASK  0xc0000000      /* P0 address mask */
                     12: 
                     13: /*
                     14: **     Permission Definitions.
                     15: */
                     16: 
                     17: #define        SHM_R   0x0100  /* read permission */
                     18: #define        SHM_W   0x0080  /* write permission */
                     19: 
                     20: /*
                     21: **     ipc_perm Mode Definitions.
                     22: */
                     23: 
                     24: #define        SHM_CLEAR       0x0200  /* clear segment on next attach */
                     25: #define        SHM_DEST        0x0400  /* destroy segment when # attached = 0 */
                     26: 
                     27: /*
                     28: **     Message Operation Flags.
                     29: */
                     30: 
                     31: #define        SHM_RDONLY      0x1000  /* attach read-only (else read-write) */
                     32: #define        SHM_RND         0x2000  /* round attach address to SHMLBA */
                     33: 
                     34: /* 
                     35:  *     Defines for shared memory limits
                     36:  */
                     37: 
                     38: #define SHMMAX (128*NBPG)      /* max. shared memory segment size */
                     39: #define SHMMIN 1               /* min. shared memory segment size */
                     40: #define SHMMNI 100             /* max. no. shared memory identifers */
                     41: #define SHMSEG 6               /* max. attached shared memory segs per proc */
                     42: #define SHMBRK         16              /* gap (clicks) between data and shared mem */
                     43: #define SHMALL         1024            /* max shared memory clicks system wide */
                     44: 
                     45: /*
                     46:  *     Defines for swapping
                     47:  */
                     48: 
                     49: #define DMSHM          1024    /* page segment size for disk addresses */
                     50: #define NSHMDAD                12      /* number of shared memory disk addresses */
                     51: #define        SHM_SWAP        0x010   /* shared memory segment swapped out */
                     52: #define SHM_UNLINK     0x020   /* proc unlinked from shared memory segment */
                     53: 
                     54: 
                     55: /*
                     56: **     Structure Definitions.
                     57: */
                     58: 
                     59: /*
                     60: **     There is a shmem data structure for each segment in the system.
                     61: */
                     62: 
                     63: struct shmid_ds {
                     64:        struct ipc_perm shm_perm;       /* operation permission struct */
                     65:        int             shm_segsz;      /* segment size */
                     66:        struct proc     *shm_proc;      /* ptr to linked proc, if loaded */
                     67:        short           shm_pidx;       /* shm_pt index of that proc */
                     68:        u_short         shm_lpid;       /* pid of last shmop */
                     69:        u_short         shm_cpid;       /* pid of creator */
                     70:        u_short         shm_cnattch;    /* # attached in memory */
                     71:        u_short         shm_nattch;     /* current # attached */
                     72:        time_t          shm_atime;      /* last shmat time */
                     73:        time_t          shm_dtime;      /* last shmdt time */
                     74:        time_t          shm_ctime;      /* last change time */
                     75:        swblk_t         shm_daddr[NSHMDAD]; /* disk add. of DMSHM pages */
                     76:        swblk_t         shm_ptdaddr;    /* disk add. of page tables */
                     77:        short           shm_rssize;     /* resident size */
                     78:        short           shm_poip;       /* page out in progress count */
                     79:        u_char          shm_status;     /* status - e.g. swapped out */
                     80: };
                     81: 
                     82: struct shminfo {
                     83:        int     shmmax, /* max shared memory segment size */
                     84:                shmmin, /* min shared memory segment size */
                     85:                shmmni, /* # of shared memory identifiers */
                     86:                shmseg, /* max attached shared memory segments per process */
                     87:                shmbrk, /* gap (in clicks) between data and shared memory */
                     88:                shmall; /* max total shared memory system wide (in clicks) */
                     89: };
                     90: 
                     91: struct shm_pt {
                     92:        u_int           shm_sva;        /* starting virtual page address */
                     93:        struct  shmid_ds *shm_shmp;     /* ptr to associated shmem */
                     94:        struct  proc    *shm_link;      /* next proc sharing this segment */
                     95:        short           shm_idx;        /* shm_pt index of that proc */
                     96:        struct  pte     *shm_spte;      /* starting pte entry  */
                     97:        struct  pte     *shm_epte;      /* ending pte entry */
                     98:        int             shm_sflg;       /* status flag */
                     99: };
                    100: struct shm_pt *vtoshmpt();
                    101: 
                    102: #ifdef KERNEL
                    103: struct shmid_ds *shmem, *shmemNSHMEM;
                    104: int    dmshm, nshmem;  
                    105: #endif KERNEL

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.