Annotation of cci/sys/h/sem.h, revision 1.1.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.