Una volta completato con successo l'invio del messaggio sulla coda, la
funzione aggiorna i dati mantenuti in \var{msqid\_ds}, in particolare vengono
modificati:
-\begin{itemize}
+\begin{itemize*}
\item Il valore di \var{msg\_lspid}, che viene impostato al \acr{pid} del
processo chiamante.
\item Il valore di \var{msg\_qnum}, che viene incrementato di uno.
\item Il valore \var{msg\_stime}, che viene impostato al tempo corrente.
-\end{itemize}
+\end{itemize*}
La funzione che permette di estrarre da una coda un messaggio (che sarà
restituendo il primo messaggio incontrato che corrisponde ai criteri
specificati (che quindi, visto che i messaggi vengono sempre inseriti dalla
coda, è quello meno recente); in particolare:
-\begin{itemize}
+\begin{itemize*}
\item se \param{msgtyp} è 0 viene estratto il messaggio in cima alla coda, cioè
quello fra i presenti che è stato inserito inserito per primo.
\item se \param{msgtyp} è positivo viene estratto il primo messaggio il cui
\item se \param{msgtyp} è negativo viene estratto il primo fra i messaggi con
il tipo di valore più basso, fra tutti quelli con un tipo inferiore al
valore assoluto di \param{msgtyp}.
-\end{itemize}
+\end{itemize*}
Il valore di \param{msgflg} permette di controllare il comportamento della
funzione, esso può essere nullo o una maschera binaria composta da uno o più
Una volta completata con successo l'estrazione del messaggio dalla coda, la
funzione aggiorna i dati mantenuti in \var{msqid\_ds}, in particolare vengono
modificati:
-\begin{itemize}
+\begin{itemize*}
\item Il valore di \var{msg\_lrpid}, che viene impostato al \acr{pid} del
processo chiamante.
\item Il valore di \var{msg\_qnum}, che viene decrementato di uno.
\item Il valore \var{msg\_rtime}, che viene impostato al tempo corrente.
-\end{itemize}
+\end{itemize*}
Come esempio dell'uso delle code di messaggi possiamo riscrivere il nostro
server di \textit{fortunes} usando queste al posto delle fifo. In questo caso
Inoltre la coda delle operazioni di ripristino viene cancellata per tutti i
semafori il cui valore viene modificato.
+\begin{table}[htb]
+ \footnotesize
+ \centering
+ \begin{tabular}[c]{|c|p{8cm}|}
+ \hline
+ \textbf{Operazione} & \textbf{Valore restituito} \\
+ \hline
+ \hline
+ \macro{GETNCNT}& valore di \var{semncnt}.\\
+ \macro{GETPID} & valore di \var{sempid}.\\
+ \macro{GETVAL} & valore di \var{semval}.\\
+ \macro{GETZCNT}& valore di \var{semzcnt}.\\
+ \hline
+ \end{tabular}
+ \caption{Valori di ritorno della funzione \func{semctl}.}
+ \label{tab:ipc_semctl_returns}
+\end{table}
+
+Il valore di ritorno della funzione in caso di successo dipende
+dall'operazione richiesta; in generale esso è nullo, a meno che non si sia
+specificata una delle operazioni riportate in
+\tabref{tab:ipc_semctl_returns}, nel qual caso viene restituito il
+corrispondente campo della struttura \var{sem}.
\begin{figure}[!htb]