Por exemplo, a estrutura sembuf é usada como argumento para as operações envolvendo a primitiva semop(), tem a seguinte forma:
struct sembuf { short int sem_num; /* número do semáforo */ short int sem_op; /* operação no semáforo */ short int sem_flg; /* flag da operação */ };
A estrutura de dados do conjunto de semáforos é a seguinte:
struct semid_ds { struct ipc_perm sem_perm; /* operation permission struct */ __time_t sem_otime; /* last semop() time */ __time_t sem_ctime; /* last time changed by semctl() */ struct sem *__sembase; /* ptr to first semaphore in array */ struct sem_queue *__sem_pending; /* pending operations */ struct sem_queue *__sem_pending_last; /* last pending operation */ struct sem_undo *__undo; /* ondo requests on this array */ unsigned short int sem_nsems; /* number of semaphores in set */ };
A estrutura de dados usada para passar as informações sobre as permissões de acesso para as operações IPC é mostrada a seguir:
struct ipc_perm { __key_t __key; /* Key. */ unsigned short int uid; /* Owner's user ID. */ unsigned short int gid; /* Owner's group ID. */ unsigned short int cuid; /* Creator's user ID. */ unsigned short int cgid; /* Creator's group ID. */ unsigned short int mode; /* Read/write permission. */ unsigned short int __seq; /* Sequence number. */ };