Next: SYSTEM CALL: semget() Up: Internal Data Structures Previous: Kernel semid_ds structure

#### Kernel `sem` structure

In the `semid_ds` structure, there exists a pointer to the base of the semaphore array itself. Each array member is of the `sem` structure type. It is also defined in `linux/sem.h`:

            /* One semaphore structure for each semaphore in the system. */
             struct sem {
                     short   sempid;         /* pid of last operation */
                     ushort  semval;         /* current value */
                     ushort  semncnt;        /* num procs awaiting increase in semval */
                     ushort  semzcnt;        /* num procs awaiting semval = 0 */
             };

`sem_pid`

  The PID (process ID) that performed the last operation

`sem_semval`

  The current value of the semaphore

`sem_semncnt`

  Number of processes waiting for resources to become available

`sem_semzcnt`

  Number of processes waiting for 100% resource utilization