Annotation of cci/sys/h/sem.h, revision 1.1

1.1     ! root        1: /* @(#)sem.h   6.1 */
        !             2: /*
        !             3: **     IPC Semaphore Facility.
        !             4: */
        !             5: 
        !             6: /*
        !             7: **     Implementation Constants.
        !             8: */
        !             9: 
        !            10: #define        PSEMN   (PZERO + 3)     /* sleep priority waiting for greater value */
        !            11: #define        PSEMZ   (PZERO + 2)     /* sleep priority waiting for zero */
        !            12: 
        !            13: /*
        !            14: **     Permission Definitions.
        !            15: */
        !            16: 
        !            17: #define        SEM_A   0x0080  /* alter permission */
        !            18: #define        SEM_R   0x0100  /* read permission */
        !            19: 
        !            20: /*
        !            21: **     Semaphore Operation Flags.
        !            22: */
        !            23: 
        !            24: #define        SEM_UNDO        0x1000  /* set up adjust on exit entry */
        !            25: 
        !            26: /*
        !            27: **     Semctl Command Definitions.
        !            28: */
        !            29: 
        !            30: #define        GETNCNT 3       /* get semncnt */
        !            31: #define        GETPID  4       /* get sempid */
        !            32: #define        GETVAL  5       /* get semval */
        !            33: #define        GETALL  6       /* get all semval's */
        !            34: #define        GETZCNT 7       /* get semzcnt */
        !            35: #define        SETVAL  8       /* set semval */
        !            36: #define        SETALL  9       /* set all semval's */
        !            37: 
        !            38: 
        !            39: /*     Defines for Semaphore Limits */
        !            40: 
        !            41: #define SEMMAP 10              /* # of entries in semaphore map */
        !            42: #define SEMMNI         10              /* # of semaphore identifiers */
        !            43: #define SEMMNS 60              /* # of semaphores in system */
        !            44: #define SEMMNU 30              /* # of undo structures in system */
        !            45: #define SEMMSL 25              /* max # of semaphores per id */
        !            46: #define SEMOPM 10              /* max # of operations per semop call */
        !            47: #define SEMUME 10              /* max # of undo entries per process */
        !            48: #define SEMVMX 32767           /* semaphore maximum value */
        !            49: #define SEMAEM 16384           /* adjust on exit max value */
        !            50: 
        !            51: /*
        !            52: **     Structure Definitions.
        !            53: */
        !            54: 
        !            55: /*
        !            56: **     There is one semaphore id data structure for each set of semaphores
        !            57: **             in the system.
        !            58: */
        !            59: 
        !            60: struct semid_ds {
        !            61:        struct ipc_perm sem_perm;       /* operation permission struct */
        !            62:        struct sem      *sem_base;      /* ptr to first semaphore in set */
        !            63:        u_short         sem_nsems;      /* # of semaphores in set */
        !            64:        time_t          sem_otime;      /* last semop time */
        !            65:        time_t          sem_ctime;      /* last change time */
        !            66: };
        !            67: 
        !            68: /*
        !            69: **     There is one semaphore structure for each semaphore in the system.
        !            70: */
        !            71: 
        !            72: struct sem {
        !            73:        u_short semval;         /* semaphore text map address */
        !            74:        short   sempid;         /* pid of last operation */
        !            75:        u_short semncnt;        /* # awaiting semval > cval */
        !            76:        u_short semzcnt;        /* # awaiting semval = 0 */
        !            77: };
        !            78: 
        !            79: /*
        !            80: **     There is one undo structure per process in the system.
        !            81: */
        !            82: 
        !            83: struct sem_undo {
        !            84:        struct sem_undo *un_np; /* ptr to next active undo structure */
        !            85:        short           un_cnt; /* # of active entries */
        !            86:        struct undo {
        !            87:                short   un_aoe; /* adjust on exit values */
        !            88:                short   un_num; /* semaphore # */
        !            89:                int     un_id;  /* semid */
        !            90:        }       un_ent[1];      /* undo entries (one minimum) */
        !            91: };
        !            92: 
        !            93: #define        SEMUSZ  (sizeof(struct sem_undo)+sizeof(struct undo)*SEMUME)
        !            94: 
        !            95: /*
        !            96: ** semaphore information structure
        !            97: */
        !            98: struct seminfo {
        !            99:        int     semmap,         /* # of entries in semaphore map */
        !           100:                semmni,         /* # of semaphore identifiers */
        !           101:                semmns,         /* # of semaphores in system */
        !           102:                semmnu,         /* # of undo structures in system */
        !           103:                semmsl,         /* max # of semaphores per id */
        !           104:                semopm,         /* max # of operations per semop call */
        !           105:                semume,         /* max # of undo entries per process */
        !           106:                semusz,         /* size in bytes of undo structure */
        !           107:                semvmx,         /* semaphore maximum value */
        !           108:                semaem;         /* adjust on exit max value */
        !           109: };
        !           110: 
        !           111: /*
        !           112: **     User semaphore template for semop system calls.
        !           113: */
        !           114: 
        !           115: struct sembuf {
        !           116:        u_short sem_num;        /* semaphore # */
        !           117:        short   sem_op;         /* semaphore operation */
        !           118:        short   sem_flg;        /* operation flags */
        !           119: };

unix.superglobalmegacorp.com

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