+Il primo campo della struttura \var{sembuf}, la cui definizione è riportata in
+\figref{fig:ipc_sembuf}, serve per indicare su quale semaforo dell'insieme si
+intende eseguire l'operazione; si ricordi che i semafori sono numerati come in
+un vettore, per cui il primo semaforo corrisponde ad un valore nullo di
+\var{sem\_num}.
+
+Il campo \var{sem\_flg} è un flag, mantenuto come maschera binaria, per il
+quale possono essere impostati i due valori \macro{IPC\_NOWAIT} e
+\macro{SEM\_UNDO}. Impostando \macro{IPC\_NOWAIT} si fa si che, invece di
+bloccarsi (in tutti quei casi in cui l'esecuzione di una operazione richiede
+che il processo vada in stato di \textit{sleep}), \func{semop} ritorni
+immediatamente con un errore di \macro{EAGAIN}. Impostando \macro{SEM\_UNDO}
+si richiede invece che l'operazione venga registrata in modo che il valore del
+semaforo possa essere ripristinato all'uscita del processo.
+
+Infine \var{sem\_op} è il campo che controlla l'operazione che viene eseguita.
+Se si specifica un valore positivo questo viene aggiunto al valore corrente di
+\var{semval}; l'operazione ha sempre successo ed il processo non viene mai
+bloccato. Specificando \macro{SEM\_UNDO} si aggiorna il contatore per il
+ripristino del valore del semaforo. Al chiamate è richiesto il privilegio di
+alterazione (scrittura) sull'insieme di semafori.
+
+Se si specifica un valore nullo il processo deve avere il privilegio di
+lettura sull'insieme. Nel caso \var{semval} sia zero l'esecuzione procede
+immediatamente, altrimenti viene incrementato \var{semzcnt} di uno ed il
+processo resta in stato di \textit{sleep} fintanto che non si ha una delle
+condizioni seguenti:
+\begin{itemize*}
+\item \var{semval} diventa zero, nel qual caso \var{semzcnt} viene
+ decrementato di uno.
+\item l'insieme di semafori viene rimosso, nel qual caso \func{semop} ritorna
+ un errore di \macro{EIDRM}.
+\item il processo chiamante riceve un segnale, nel qual caso \var{semzcnt}
+ viene decrementato di uno e \func{semop} ritorna un errore di \macro{EINTR}.
+\end{itemize*}