Si prosegue con la reindicizzazione delle funzioni, con relativa revizione
[gapil.git] / prochand.tex
index 7505cadf8b33df6eaf307c521f5194850ff19346..a1b36fc199c1159950d78f6c19a3935aa9d7cf13 100644 (file)
@@ -1051,12 +1051,12 @@ le apposite funzioni trattate in \secref{sec:sig_strsignal}.
 \label{sec:proc_wait4}
 
 Linux, seguendo un'estensione di BSD, supporta altre due funzioni per la
 \label{sec:proc_wait4}
 
 Linux, seguendo un'estensione di BSD, supporta altre due funzioni per la
-lettura dello stato di terminazione di un processo \func{wait3} e
-\func{wait4}, analoghe alle precedenti ma che prevedono un ulteriore
-parametro attraverso il quale il kernel può restituire al padre informazioni
-sulle risorse usate dal processo terminato e dai vari figli.  I prototipi di
-queste funzioni, che diventano accessibili definendo la costante
-\macro{\_USE\_BSD}, sono:
+lettura dello stato di terminazione di un processo, analoghe alle precedenti
+ma che prevedono un ulteriore parametro attraverso il quale il kernel può
+restituire al padre informazioni sulle risorse usate dal processo terminato e
+dai vari figli.  Le due funzioni sono \funcd{wait3} e \funcd{wait4}, che
+diventano accessibili definendo la macro \macro{\_USE\_BSD}; i loro prototipi
+sono:
 \begin{functions}
   \headdecl{sys/times.h} \headdecl{sys/types.h} \headdecl{sys/wait.h}
   \headdecl{sys/resource.h} 
 \begin{functions}
   \headdecl{sys/times.h} \headdecl{sys/types.h} \headdecl{sys/wait.h}
   \headdecl{sys/resource.h} 
@@ -1093,7 +1093,7 @@ disco.
 Ci sono sei diverse versioni di \func{exec} (per questo la si è chiamata
 famiglia di funzioni) che possono essere usate per questo compito, in realtà
 (come mostrato in \figref{fig:proc_exec_relat}), sono tutte un front-end a
 Ci sono sei diverse versioni di \func{exec} (per questo la si è chiamata
 famiglia di funzioni) che possono essere usate per questo compito, in realtà
 (come mostrato in \figref{fig:proc_exec_relat}), sono tutte un front-end a
-\func{execve}. Il prototipo di quest'ultima è:
+\funcd{execve}. Il prototipo di quest'ultima è:
 \begin{prototype}{unistd.h}
 {int execve(const char *filename, char *const argv[], char *const envp[])}
   Esegue il programma contenuto nel file \param{filename}.
 \begin{prototype}{unistd.h}
 {int execve(const char *filename, char *const argv[], char *const envp[])}
   Esegue il programma contenuto nel file \param{filename}.
@@ -1117,10 +1117,11 @@ famiglia di funzioni) che possono essere usate per questo compito, in realt
     interprete.
   \item[\errcode{ELIBBAD}] Un interprete ELF non è in un formato
     riconoscibile.
     interprete.
   \item[\errcode{ELIBBAD}] Un interprete ELF non è in un formato
     riconoscibile.
+  \item[\errcode{E2BIG}] La lista degli argomenti è troppo grande.
   \end{errlist}
   ed inoltre anche \errval{EFAULT}, \errval{ENOMEM}, \errval{EIO},
   \end{errlist}
   ed inoltre anche \errval{EFAULT}, \errval{ENOMEM}, \errval{EIO},
-  \errval{ENAMETOOLONG}, \errval{E2BIG}, \errval{ELOOP}, \errval{ENOTDIR},
-  \errval{ENFILE}, \errval{EMFILE}.}
+  \errval{ENAMETOOLONG}, \errval{ELOOP}, \errval{ENOTDIR}, \errval{ENFILE},
+  \errval{EMFILE}.}
 \end{prototype}
 
 La funzione \func{exec} esegue il file o lo script indicato da
 \end{prototype}
 
 La funzione \func{exec} esegue il file o lo script indicato da
@@ -1428,9 +1429,10 @@ impostati all'utente e al gruppo proprietari del file. Questo consente, per
 programmi in cui ci sia necessità, di dare a qualunque utente normale
 privilegi o permessi di un'altro (o dell'amministratore).
 
 programmi in cui ci sia necessità, di dare a qualunque utente normale
 privilegi o permessi di un'altro (o dell'amministratore).
 
-Come nel caso del \acr{pid} e del \acr{ppid} tutti questi identificatori
-possono essere letti dal processo attraverso delle opportune funzioni, i cui
-prototipi sono i seguenti:
+Come nel caso del \acr{pid} e del \acr{ppid}, anche tutti questi
+identificatori possono essere letti attraverso le opportune funzioni:
+\funcd{getuid}, \funcd{geteuid}, \funcd{getgid} e \funcd{getegid}, i loro
+prototipi sono:
 \begin{functions}
   \headdecl{unistd.h}
   \headdecl{sys/types.h}  
 \begin{functions}
   \headdecl{unistd.h}
   \headdecl{sys/types.h}  
@@ -1488,8 +1490,8 @@ ignorarne l'esistenza, in quanto saranno del tutto equivalenti ai precedenti.
 \label{sec:proc_setuid}
 
 Le due funzioni che vengono usate per cambiare identità (cioè utente e gruppo
 \label{sec:proc_setuid}
 
 Le due funzioni che vengono usate per cambiare identità (cioè utente e gruppo
-di appartenenza) ad un processo sono rispettivamente \func{setuid} e
-\func{setgid}; come accennato in \secref{sec:proc_access_id} in Linux esse
+di appartenenza) ad un processo sono rispettivamente \funcd{setuid} e
+\funcd{setgid}; come accennato in \secref{sec:proc_access_id} in Linux esse
 seguono la semantica POSIX che prevede l'esistenza dell'\textit{userid
   salvato} e del \textit{groupid salvato}; i loro prototipi sono:
 \begin{functions}
 seguono la semantica POSIX che prevede l'esistenza dell'\textit{userid
   salvato} e del \textit{groupid salvato}; i loro prototipi sono:
 \begin{functions}
@@ -1583,7 +1585,7 @@ l'\textsl{userid effettivo} del processo per cedere i privilegi occorre
 ricorrere ad altre funzioni (si veda ad esempio \secref{sec:proc_seteuid}).
 
 
 ricorrere ad altre funzioni (si veda ad esempio \secref{sec:proc_seteuid}).
 
 
-\subsection{Le funzioni \func{setreuid} e \func{setresuid}}
+\subsection{Le funzioni \funcd{setreuid} e \funcd{setresuid}}
 \label{sec:proc_setreuid}
 
 Queste due funzioni derivano da BSD che, non supportando\footnote{almeno fino
 \label{sec:proc_setreuid}
 
 Queste due funzioni derivano da BSD che, non supportando\footnote{almeno fino
@@ -1638,7 +1640,7 @@ corrente, l'userid salvato viene automaticamente uniformato al valore
 dell'userid effettivo.
 
 
 dell'userid effettivo.
 
 
-\subsection{Le funzioni \func{seteuid} e \func{setegid}}
+\subsection{Le funzioni \funcd{seteuid} e \funcd{setegid}}
 \label{sec:proc_seteuid}
 
 Queste funzioni sono un'estensione allo standard POSIX.1 (ma sono comunque
 \label{sec:proc_seteuid}
 
 Queste funzioni sono un'estensione allo standard POSIX.1 (ma sono comunque
@@ -1666,7 +1668,7 @@ all'amministratore di impostare solo l'userid effettivo, dato che l'uso
 normale di \func{setuid} comporta l'impostazione di tutti gli identificatori.
  
 
 normale di \func{setuid} comporta l'impostazione di tutti gli identificatori.
  
 
-\subsection{Le funzioni \func{setresuid} e \func{setresgid}}
+\subsection{Le funzioni \funcd{setresuid} e \funcd{setresgid}}
 \label{sec:proc_setresuid}
 
 Queste due funzioni sono un'estensione introdotta in Linux dal kernel 2.1.44,
 \label{sec:proc_setresuid}
 
 Queste due funzioni sono un'estensione introdotta in Linux dal kernel 2.1.44,
@@ -1698,7 +1700,7 @@ pu
 lascia inalterato l'identificatore corrispondente.
 
 Per queste funzioni esistono anche due controparti che permettono di leggere
 lascia inalterato l'identificatore corrispondente.
 
 Per queste funzioni esistono anche due controparti che permettono di leggere
-in blocco i vari identificatori: \func{getresuid} e \func{getresgid}; i loro
+in blocco i vari identificatori: \funcd{getresuid} e \funcd{getresgid}; i loro
 prototipi sono: 
 \begin{functions}
 \headdecl{unistd.h}
 prototipi sono: 
 \begin{functions}
 \headdecl{unistd.h}
@@ -1746,8 +1748,8 @@ file, mantenendo quelli originari per quanto riguarda tutti gli altri
 controlli di accesso, così che l'utente non possa inviare segnali al server
 NFS.
 
 controlli di accesso, così che l'utente non possa inviare segnali al server
 NFS.
 
-Le due funzioni usate per cambiare questi identificatori sono \func{setfsuid}
-e \func{setfsgid}, ovviamente sono specifiche di Linux e non devono essere
+Le due funzioni usate per cambiare questi identificatori sono \funcd{setfsuid}
+e \funcd{setfsgid}, ovviamente sono specifiche di Linux e non devono essere
 usate se si intendono scrivere programmi portabili; i loro prototipi sono:
 \begin{functions}
 \headdecl{sys/fsuid.h}
 usate se si intendono scrivere programmi portabili; i loro prototipi sono:
 \begin{functions}
 \headdecl{sys/fsuid.h}
@@ -1775,15 +1777,16 @@ gruppi supplementari. Ogni processo pu
 gruppi supplementari in aggiunta al gruppo primario, questi vengono ereditati
 dal processo padre e possono essere cambiati con queste funzioni.
 
 gruppi supplementari in aggiunta al gruppo primario, questi vengono ereditati
 dal processo padre e possono essere cambiati con queste funzioni.
 
-La funzione che permette di leggere i gruppi supplementari è \func{getgroups};
-questa funzione è definita nello standard POSIX ed il suo prototipo è:
+La funzione che permette di leggere i gruppi supplementari è
+\funcd{getgroups}; questa funzione è definita nello standard POSIX ed il suo
+prototipo è:
 \begin{functions}
   \headdecl{sys/types.h}
   \headdecl{unistd.h}
   
 \begin{functions}
   \headdecl{sys/types.h}
   \headdecl{unistd.h}
   
-  \funcdecl{int getgroups(int size, gid\_t list[])} Legge gli identificatori
-  dei gruppi supplementari del processo sul vettore \param{list} di dimensione
-  \param{size}.
+  \funcdecl{int getgroups(int size, gid\_t list[])} 
+  
+  Legge gli identificatori dei gruppi supplementari.
   
   \bodydesc{La funzione restituisce il numero di gruppi letti in caso di
     successo e -1 in caso di fallimento, nel qual caso \var{errno} assumerà
   
   \bodydesc{La funzione restituisce il numero di gruppi letti in caso di
     successo e -1 in caso di fallimento, nel qual caso \var{errno} assumerà
@@ -1794,38 +1797,43 @@ questa funzione 
       minore del numero di gruppi supplementari del processo.
     \end{errlist}}
 \end{functions}
       minore del numero di gruppi supplementari del processo.
     \end{errlist}}
 \end{functions}
-\noindent non è specificato se la funzione inserisca o meno nella lista
-il groupid effettivo del processo. Se si specifica un valore di \param{size}
-uguale a 0 \param{list} non viene modificato, ma si ottiene il numero di
-gruppi supplementari.
 
 
-Una seconda funzione, \func{getgrouplist}, può invece essere usata per
+La funzione legge gli identificatori dei gruppi supplementari del processo sul
+vettore \param{list} di dimensione \param{size}. Non è specificato se la
+funzione inserisca o meno nella lista il groupid effettivo del processo. Se si
+specifica un valore di \param{size} uguale a 0 \param{list} non viene
+modificato, ma si ottiene il numero di gruppi supplementari.
+
+Una seconda funzione, \funcd{getgrouplist}, può invece essere usata per
 ottenere tutti i gruppi a cui appartiene un utente; il suo prototipo è:
 \begin{functions}
   \headdecl{sys/types.h} 
   \headdecl{grp.h}
   
   \funcdecl{int getgrouplist(const char *user, gid\_t group, gid\_t *groups,
 ottenere tutti i gruppi a cui appartiene un utente; il suo prototipo è:
 \begin{functions}
   \headdecl{sys/types.h} 
   \headdecl{grp.h}
   
   \funcdecl{int getgrouplist(const char *user, gid\_t group, gid\_t *groups,
-    int *ngroups)} Legge i gruppi supplementari dell'utente \param{user}.
+    int *ngroups)} Legge i gruppi supplementari.
   
   \bodydesc{La funzione legge fino ad un massimo di \param{ngroups} valori,
     restituisce 0 in caso di successo e -1 in caso di fallimento.}
 \end{functions}
   
   \bodydesc{La funzione legge fino ad un massimo di \param{ngroups} valori,
     restituisce 0 in caso di successo e -1 in caso di fallimento.}
 \end{functions}
-\noindent la funzione esegue una scansione del database dei gruppi (si veda
-\secref{sec:sys_user_group}) e ritorna in \param{groups} la lista di quelli a
-cui l'utente appartiene. Si noti che \param{ngroups} è passato come puntatore
-perché qualora il valore specificato sia troppo piccolo la funzione ritorna
--1, passando indietro il numero dei gruppi trovati.
+
+La funzione legge i gruppi supplementari dell'utente \param{user} eseguendo
+una scansione del database dei gruppi (si veda \secref{sec:sys_user_group}) e
+ritorna in \param{groups} la lista di quelli a cui l'utente appartiene. Si
+noti che \param{ngroups} è passato come puntatore perché qualora il valore
+specificato sia troppo piccolo la funzione ritorna -1, passando indietro il
+numero dei gruppi trovati.
 
 Per impostare i gruppi supplementari di un processo ci sono due funzioni, che
 possono essere usate solo se si hanno i privilegi di amministratore. La prima
 
 Per impostare i gruppi supplementari di un processo ci sono due funzioni, che
 possono essere usate solo se si hanno i privilegi di amministratore. La prima
-delle due è \func{setgroups}, ed il suo prototipo è:
+delle due è \funcd{setgroups}, ed il suo prototipo è:
 \begin{functions}
   \headdecl{sys/types.h}
   \headdecl{grp.h}
   
 \begin{functions}
   \headdecl{sys/types.h}
   \headdecl{grp.h}
   
-  \funcdecl{int setgroups(size\_t size, gid\_t *list)} Imposta i gruppi
-  supplementari del processo ai valori specificati in \param{list}.
+  \funcdecl{int setgroups(size\_t size, gid\_t *list)} 
+  
+  Imposta i gruppi supplementari del processo.
 
   \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
     fallimento, nel qual caso \var{errno} assumerà i valori:
 
   \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
     fallimento, nel qual caso \var{errno} assumerà i valori:
@@ -1833,19 +1841,25 @@ delle due 
     \item[\errcode{EFAULT}] \param{list} non ha un indirizzo valido.
     \item[\errcode{EPERM}] il processo non ha i privilegi di amministratore.
     \item[\errcode{EINVAL}] il valore di \param{size} è maggiore del valore
     \item[\errcode{EFAULT}] \param{list} non ha un indirizzo valido.
     \item[\errcode{EPERM}] il processo non ha i privilegi di amministratore.
     \item[\errcode{EINVAL}] il valore di \param{size} è maggiore del valore
-    massimo (\const{NGROUPS}, che per Linux è 32).
+    massimo consentito.
     \end{errlist}}
 \end{functions}
 
     \end{errlist}}
 \end{functions}
 
+La funzione imposta i gruppi supplementari del processo corrente ai valori
+specificati nel vettore passato con l'argomento \param{list}, di dimensioni
+date dall'argomento \param{size}. Il numero massimo di gruppi supplementari è
+un parametro di sistema, che può essere ricavato con le modalità spiegate in
+\secref{sec:sys_characteristics}.
+
 Se invece si vogliono impostare i gruppi supplementari del processo a quelli di
 Se invece si vogliono impostare i gruppi supplementari del processo a quelli di
-un utente specifico, si può usare \func{initgroups} il cui prototipo è:
+un utente specifico, si può usare \funcd{initgroups} il cui prototipo è:
 \begin{functions}
   \headdecl{sys/types.h}
   \headdecl{grp.h}
 
 \begin{functions}
   \headdecl{sys/types.h}
   \headdecl{grp.h}
 
-  \funcdecl{int initgroups(const char *user, gid\_t group)} Imposta i gruppi
-  supplementari del processo a quelli di cui è membro l'utente \param{user},
-  aggiungendo il gruppo addizionale \param{group}.
+  \funcdecl{int initgroups(const char *user, gid\_t group)} 
+  
+  Inizializza la lista dei gruppi supplementari.
   
   \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
     fallimento, nel qual caso \var{errno} assumerà gli stessi valori di
   
   \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
     fallimento, nel qual caso \var{errno} assumerà gli stessi valori di
@@ -1854,13 +1868,13 @@ un utente specifico, si pu
 \end{functions}
 
 La funzione esegue la scansione del database dei gruppi (usualmente
 \end{functions}
 
 La funzione esegue la scansione del database dei gruppi (usualmente
-\file{/etc/groups}) cercando i gruppi di cui è membro \param{user} e
-costruendo una lista di gruppi supplementari a cui aggiunge \param{group}, che
-poi imposta usando \func{setgroups}.
-Si tenga presente che sia \func{setgroups} che \func{initgroups} non sono
-definite nello standard POSIX.1 e che pertanto non è possibile utilizzarle
-quando si definisce \macro{\_POSIX\_SOURCE} o si compila con il flag
-\cmd{-ansi}.
+\file{/etc/groups}) cercando i gruppi di cui è membro l'utente \param{user}
+con cui costruisce una lista di gruppi supplementari, a cui aggiunge anche
+\param{group}, infine imposta questa lista per il processo corrente usando
+\func{setgroups}.  Si tenga presente che sia \func{setgroups} che
+\func{initgroups} non sono definite nello standard POSIX.1 e che pertanto non
+è possibile utilizzarle quando si definisce \macro{\_POSIX\_SOURCE} o si
+compila con il flag \cmd{-ansi}.
 
 
 \section{La gestione della priorità di esecuzione}
 
 
 \section{La gestione della priorità di esecuzione}
@@ -2040,7 +2054,7 @@ fatto che generalmente questo viene usato per diminuire la priorit
 processo, come misura di cortesia nei confronti degli altri.  I processi
 infatti vengono creati dal sistema con lo stesso valore di \var{nice} (nullo)
 e nessuno è privilegiato rispetto agli altri; il valore può essere modificato
 processo, come misura di cortesia nei confronti degli altri.  I processi
 infatti vengono creati dal sistema con lo stesso valore di \var{nice} (nullo)
 e nessuno è privilegiato rispetto agli altri; il valore può essere modificato
-solo attraverso la funzione \func{nice}, il cui prototipo è:
+solo attraverso la funzione \funcd{nice}, il cui prototipo è:
 \begin{prototype}{unistd.h}
 {int nice(int inc)}
   Aumenta il valore di \var{nice} per il processo corrente.
 \begin{prototype}{unistd.h}
 {int nice(int inc)}
   Aumenta il valore di \var{nice} per il processo corrente.
@@ -2065,7 +2079,7 @@ la priorit
 
 In SUSv2 la funzione ritorna il nuovo valore di \var{nice}; Linux non segue
 questa convenzione, e per leggere il nuovo valore occorre invece usare la
 
 In SUSv2 la funzione ritorna il nuovo valore di \var{nice}; Linux non segue
 questa convenzione, e per leggere il nuovo valore occorre invece usare la
-funzione \func{getpriority}, derivata da BSD, il cui prototipo è:
+funzione \funcd{getpriority}, derivata da BSD, il cui prototipo è:
 \begin{prototype}{sys/resource.h}
 {int getpriority(int which, int who)}
   
 \begin{prototype}{sys/resource.h}
 {int getpriority(int which, int who)}
   
@@ -2114,7 +2128,7 @@ rilevare una condizione di errore 
 prima della chiamata alla funzione, per verificare che essa resti uguale a
 zero.  
 
 prima della chiamata alla funzione, per verificare che essa resti uguale a
 zero.  
 
-Analoga a \func{getpriority} la funzione \func{setpriority} permette di
+Analoga a \func{getpriority} la funzione \funcd{setpriority} permette di
 impostare la priorità di uno o più processi; il suo prototipo è:
 \begin{prototype}{sys/resource.h}
 {int setpriority(int which, int who, int prio)}  
 impostare la priorità di uno o più processi; il suo prototipo è:
 \begin{prototype}{sys/resource.h}
 {int setpriority(int which, int who, int prio)}  
@@ -2192,11 +2206,11 @@ di scheduling che si 
 \end{basedescript}
 
 La funzione per impostare le politiche di scheduling (sia real-time che
 \end{basedescript}
 
 La funzione per impostare le politiche di scheduling (sia real-time che
-ordinarie) ed i relativi parametri è \func{sched\_setscheduler}; il suo
+ordinarie) ed i relativi parametri è \funcd{sched\_setscheduler}; il suo
 prototipo è:
 \begin{prototype}{sched.h}
 {int sched\_setscheduler(pid\_t pid, int policy, const struct sched\_param *p)}
 prototipo è:
 \begin{prototype}{sched.h}
 {int sched\_setscheduler(pid\_t pid, int policy, const struct sched\_param *p)}
-  Imposta priorità e politica di scheduling per il processo \param{pid}.
+  Imposta priorità e politica di scheduling.
   
   \bodydesc{La funzione ritorna la priorità in caso di successo e -1 in caso
     di errore, nel qual caso \var{errno} può assumere i valori:
   
   \bodydesc{La funzione ritorna la priorità in caso di successo e -1 in caso
     di errore, nel qual caso \var{errno} può assumere i valori:
@@ -2210,10 +2224,10 @@ prototipo 
   \end{errlist}}
 \end{prototype}
 
   \end{errlist}}
 \end{prototype}
 
-La funzione esegue l'impostazione per il processo specificato; un valore nullo
-di \param{pid} esegue l'impostazione per il processo corrente, solo un
-processo con i privilegi di amministratore può impostare delle priorità
-assolute diverse da zero. La politica di scheduling è specificata
+La funzione esegue l'impostazione per il processo specificato dall'argomento
+\param{pid}; un valore nullo esegue l'impostazione per il processo corrente.
+Solo un processo con i privilegi di amministratore può impostare delle
+priorità assolute diverse da zero. La politica di scheduling è specificata
 dall'argomento \param{policy} i cui possibili valori sono riportati in
 \tabref{tab:proc_sched_policy}; un valore negativo per \param{policy} mantiene
 la politica di scheduling corrente.
 dall'argomento \param{policy} i cui possibili valori sono riportati in
 \tabref{tab:proc_sched_policy}; un valore negativo per \param{policy} mantiene
 la politica di scheduling corrente.
@@ -2258,12 +2272,10 @@ struct sched_param {
   \label{fig:sig_sched_param}
 \end{figure}
 
   \label{fig:sig_sched_param}
 \end{figure}
 
-
-
 Lo standard POSIX.1b prevede comunque che i due valori della massima e minima
 priorità statica possano essere ottenuti, per ciascuna delle politiche di
 Lo standard POSIX.1b prevede comunque che i due valori della massima e minima
 priorità statica possano essere ottenuti, per ciascuna delle politiche di
-scheduling realtime, tramite le due funzioni \func{sched\_get\_priority\_max}
-e \func{sched\_get\_priority\_min}, i cui prototipi sono:
+scheduling realtime, tramite le due funzioni \funcd{sched\_get\_priority\_max}
+e \funcd{sched\_get\_priority\_min}, i cui prototipi sono:
 \begin{functions}
   \headdecl{sched.h}
   
 \begin{functions}
   \headdecl{sched.h}
   
@@ -2299,7 +2311,7 @@ sar
 nel caso che esso sia stato interrotto da un processo a priorità più alta.
 
 La priorità assoluta può essere riletta indietro dalla funzione
 nel caso che esso sia stato interrotto da un processo a priorità più alta.
 
 La priorità assoluta può essere riletta indietro dalla funzione
-\func{sched\_getscheduler}, il cui prototipo è:
+\funcd{sched\_getscheduler}, il cui prototipo è:
 \begin{prototype}{sched.h}
 {int sched\_getscheduler(pid\_t pid)}
   Legge la politica di scheduling per il processo \param{pid}.
 \begin{prototype}{sched.h}
 {int sched\_getscheduler(pid\_t pid)}
   Legge la politica di scheduling per il processo \param{pid}.
@@ -2318,9 +2330,8 @@ specificato; se \param{pid} 
 chiamante.
 
 Se si intende operare solo sulla priorità assoluta di un processo si possono
 chiamante.
 
 Se si intende operare solo sulla priorità assoluta di un processo si possono
-usare le funzioni \func{sched\_setparam} e \func{sched\_getparam}, i cui
+usare le funzioni \funcd{sched\_setparam} e \funcd{sched\_getparam}, i cui
 prototipi sono:
 prototipi sono:
-  
 \begin{functions}
   \headdecl{sched.h}
 
 \begin{functions}
   \headdecl{sched.h}
 
@@ -2347,7 +2358,7 @@ verificata controllando la macro \macro{\_POSIX\_PRIORITY\_SCHEDULING} che 
 definita nell'header \file{sched.h}.
 
 L'ultima funzione che permette di leggere le informazioni relative ai processi
 definita nell'header \file{sched.h}.
 
 L'ultima funzione che permette di leggere le informazioni relative ai processi
-real-time è \func{sched\_rr\_get\_interval}, che permette di ottenere la
+real-time è \funcd{sched\_rr\_get\_interval}, che permette di ottenere la
 lunghezza della \textit{time slice} usata dalla politica \textit{round robin};
 il suo prototipo è:
 \begin{prototype}{sched.h}
 lunghezza della \textit{time slice} usata dalla politica \textit{round robin};
 il suo prototipo è:
 \begin{prototype}{sched.h}
@@ -2369,7 +2380,7 @@ definizione si pu
 
 Come accennato ogni processo che usa lo scheduling real-time può rilasciare
 volontariamente la CPU; questo viene fatto attraverso la funzione
 
 Come accennato ogni processo che usa lo scheduling real-time può rilasciare
 volontariamente la CPU; questo viene fatto attraverso la funzione
-\func{sched\_yield}, il cui prototipo è:
+\funcd{sched\_yield}, il cui prototipo è:
 \begin{prototype}{sched.h}
   {int sched\_yield(void)} 
   
 \begin{prototype}{sched.h}
   {int sched\_yield(void)}