X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=system.tex;h=69d6036231267f1956bd5c1e17b253e43dd87a67;hp=f6e6d50d0e31728fc10ae938fed98292ef6fdf0e;hb=ff2d0141751ed62ef56e5bfd226c589311b8b669;hpb=5a59e67204ff436dceb6a13ed39e876aea3945a8 diff --git a/system.tex b/system.tex index f6e6d50..69d6036 100644 --- a/system.tex +++ b/system.tex @@ -84,7 +84,7 @@ avere un valore minimo di 8. \footnotesize \begin{tabular}[c]{|l|r|l|} \hline - \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\ + \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\ \hline \hline \const{MB\_LEN\_MAX}& 16 & massima dimensione di un @@ -126,7 +126,7 @@ A questi valori lo standard ISO C90 ne aggiunge altri tre, relativi al tipo \footnotesize \begin{tabular}[c]{|l|r|l|} \hline - \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\ + \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\ \hline \hline \const{LLONG\_MAX}& 9223372036854775807& massimo di \ctyp{long long}\\ @@ -159,7 +159,7 @@ file, riportate in \tabref{tab:sys_file_macro}). \footnotesize \begin{tabular}[c]{|l|r|p{8cm}|} \hline - \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\ + \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\ \hline \hline \const{ARG\_MAX} &131072& dimensione massima degli argomenti @@ -203,7 +203,7 @@ riportati in \tabref{tab:sys_posix1_general}. \footnotesize \begin{tabular}[c]{|l|r|p{8cm}|} \hline - \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\ + \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\ \hline \hline \const{\_POSIX\_ARG\_MAX} & 4096& dimensione massima degli argomenti @@ -249,10 +249,10 @@ valori ottenuti da \func{sysconf}. \textbf{Macro}&\textbf{Significato}\\ \hline \hline - \const{\_POSIX\_JOB\_CONTROL}& il sistema supporta il + \macro{\_POSIX\_JOB\_CONTROL}& il sistema supporta il \textit{job control} (vedi \secref{sec:sess_job_control}).\\ - \const{\_POSIX\_SAVED\_IDS} & il sistema supporta gli identificatori del + \macro{\_POSIX\_SAVED\_IDS} & il sistema supporta gli identificatori del gruppo \textit{saved} (vedi \secref{sec:proc_access_id}) per il controllo di accesso dei processi\\ @@ -340,10 +340,10 @@ relative spiegazioni, si pu \texttt{\_SC\_CLK\_TCK}& \const{CLK\_TCK} & Il numero di \textit{clock tick} al secondo, cioè l'unità di misura del \textit{process time} (vedi \secref{sec:sys_unix_time}).\\ - \texttt{\_SC\_JOB\_CONTROL}&\const{\_POSIX\_JOB\_CONTROL}& + \texttt{\_SC\_JOB\_CONTROL}&\macro{\_POSIX\_JOB\_CONTROL}& Indica se è supportato il \textit{job control} (vedi \secref{sec:sess_job_control}) in stile POSIX.\\ - \texttt{\_SC\_SAVED\_IDS}&\const{\_POSIX\_SAVED\_IDS}& + \texttt{\_SC\_SAVED\_IDS}&\macro{\_POSIX\_SAVED\_IDS}& Indica se il sistema supporta i \textit{saved id} (vedi \secref{sec:proc_access_id}).\\ \texttt{\_SC\_VERSION}& \const{\_POSIX\_VERSION} & @@ -400,7 +400,7 @@ riportate in \tabref{tab:sys_file_macro}. \footnotesize \begin{tabular}[c]{|l|r|l|} \hline - \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\ + \textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\ \hline \hline \const{LINK\_MAX} &8 & numero massimo di link a un file\\ @@ -414,7 +414,7 @@ riportate in \tabref{tab:sys_file_macro}. del terminale (vedi \secref{sec:term_design}).\\ \hline \end{tabular} - \caption{Macro per i limiti sulle caratteristiche dei file.} + \caption{Costanti per i limiti sulle caratteristiche dei file.} \label{tab:sys_file_macro} \end{table} @@ -447,7 +447,7 @@ analoghe di \tabref{tab:sys_posix1_general}. % \const{\_POSIX\_DELAYTIMER\_MAX}& 32 & \\ \hline \end{tabular} - \caption{Macro dei valori minimi delle caratteristiche dei file per la + \caption{Costanti dei valori minimi delle caratteristiche dei file per la conformità allo standard POSIX.1.} \label{tab:sys_posix1_file} \end{table} @@ -498,7 +498,7 @@ suo prototipo Restituisce informazioni sul sistema nella struttura \param{info}. \bodydesc{La funzione ritorna 0 in caso di successo e -1 in caso di - fallimento, nel qual caso \var{errno} assumerà il valore \const{EFAULT}.} + fallimento, nel qual caso \var{errno} assumerà il valore \errval{EFAULT}.} \end{prototype} La funzione, che viene usata dal comando \cmd{uname}, restituisce le @@ -516,7 +516,7 @@ indicano rispettivamente: \end{itemize*} l'ultima informazione è stata aggiunta di recente e non è prevista dallo standard POSIX, essa è accessibile, come mostrato in \figref{fig:sys_utsname}, -solo definendo \const{\_GNU\_SOURCE}. +solo definendo \macro{\_GNU\_SOURCE}. \begin{figure}[!htb] \footnotesize \centering @@ -535,21 +535,21 @@ struct utsname { \end{lstlisting} \end{minipage} \normalsize - \caption{La struttura \var{utsname}.} + \caption{La struttura \structd{utsname}.} \label{fig:sys_utsname} \end{figure} In generale si tenga presente che le dimensioni delle stringe di una -\var{utsname} non è specificata, e che esse sono sempre terminate con -\val{null}; il manuale delle \acr{glibc} indica due diverse dimensioni, +\struct{utsname} non è specificata, e che esse sono sempre terminate con NUL; +il manuale delle \acr{glibc} indica due diverse dimensioni, \const{\_UTSNAME\_LENGTH} per i campi standard e \const{\_UTSNAME\_DOMAIN\_LENGTH} per quello specifico per il nome di dominio; altri sistemi usano nomi diversi come \const{SYS\_NMLN} o \const{\_SYS\_NMLN} o \const{UTSLEN} che possono avere valori diversi.\footnote{Nel caso di Linux -\func{uname} corrisponde in realtà a 3 system call diverse, le prime due usano -rispettivamente delle lunghezze delle stringhe di 9 e 65 byte; la terza usa -anch'essa 65 byte, ma restituisce anche l'ultimo campo, \var{domainname}, con -una lunghezza di 257 byte.} + \func{uname} corrisponde in realtà a 3 system call diverse, le prime due + usano rispettivamente delle lunghezze delle stringhe di 9 e 65 byte; la + terza usa anch'essa 65 byte, ma restituisce anche l'ultimo campo, + \var{domainname}, con una lunghezza di 257 byte.} \section{Opzioni e configurazione del sistema} @@ -601,7 +601,7 @@ Legge o scrive uno dei parametri di sistema. quando non si è specificato sufficiente spazio per ricevere il valore di un parametro. \end{errlist} - ed inoltre \const{EFAULT}. + ed inoltre \errval{EFAULT}. } \end{functions} @@ -719,8 +719,8 @@ sulla directory \param{target}. sbagliato. \item[\errcode{EMFILE}] la tabella dei device \textit{dummy} è piena. \end{errlist} - ed inoltre \const{ENOTDIR}, \const{EFAULT}, \const{ENOMEM}, - \const{ENAMETOOLONG}, \const{ENOENT} o \const{ELOOP}.} + ed inoltre \errval{ENOTDIR}, \errval{EFAULT}, \errval{ENOMEM}, + \errval{ENAMETOOLONG}, \errval{ENOENT} o \errval{ELOOP}.} \end{prototype} La funzione monta sulla directory \param{target}, detta \textit{mount point}, @@ -825,8 +825,8 @@ Una volta che non si voglia pi \item[\errcode{EBUSY}] \param{target} è la directory di lavoro di qualche processo, o contiene dei file aperti, o un altro mount point. \end{errlist} - ed inoltre \const{ENOTDIR}, \const{EFAULT}, \const{ENOMEM}, - \const{ENAMETOOLONG}, \const{ENOENT} o \const{ELOOP}.} + ed inoltre \errval{ENOTDIR}, \errval{EFAULT}, \errval{ENOMEM}, + \errval{ENAMETOOLONG}, \errval{ENOENT} o \errval{ELOOP}.} \end{prototype} \noindent la funzione prende il nome della directory su cui il filesystem è montato e non il file o il dispositivo che è stato montato,\footnote{questo è @@ -879,19 +879,19 @@ informazioni riguardo al filesystem su cui si trova un certo file, sono \item[\errcode{ENOSYS}] il filesystem su cui si trova il file specificato non supporta la funzione. \end{errlist} - e \const{EFAULT} ed \const{EIO} per entrambe, \const{EBADF} per - \func{fstatfs}, \const{ENOTDIR}, \const{ENAMETOOLONG}, \const{ENOENT}, - \const{EACCES}, \const{ELOOP} per \func{statfs}.} + e \errval{EFAULT} ed \errval{EIO} per entrambe, \errval{EBADF} per + \func{fstatfs}, \errval{ENOTDIR}, \errval{ENAMETOOLONG}, \errval{ENOENT}, + \errval{EACCES}, \errval{ELOOP} per \func{statfs}.} \end{functions} Queste funzioni permettono di ottenere una serie di informazioni generali riguardo al filesystem su cui si trova il file specificato; queste vengono -restituite una struttura \param{buf} di tipo \type{statfs} definita come in -\figref{fig:sys_statfs}, ed i campi che sono indefiniti per il filesystem in -esame sono impostati a zero. I valori del campo \var{f\_type} sono definiti -per i vari filesystem nei relativi file di header dei sorgenti del kernel da -costanti del tipo \var{XXX\_SUPER\_MAGIC}, dove \var{XXX} in genere è il -nome del filesystem stesso. +restituite all'indirizzo \param{buf} di una struttura \struct{statfs} definita +come in \figref{fig:sys_statfs}, ed i campi che sono indefiniti per il +filesystem in esame sono impostati a zero. I valori del campo \var{f\_type} +sono definiti per i vari filesystem nei relativi file di header dei sorgenti +del kernel da costanti del tipo \var{XXX\_SUPER\_MAGIC}, dove \var{XXX} in +genere è il nome del filesystem stesso. \begin{figure}[!htb] \footnotesize \centering @@ -903,8 +903,8 @@ struct statfs { long f_blocks; /* blocchi totali nel filesystem */ long f_bfree; /* blocchi liberi nel filesystem */ long f_bavail; /* blocchi liberi agli utenti normali */ - long f_files; /* inodes totali nel filesystem */ - long f_ffree; /* inodes liberi nel filesystem */ + long f_files; /* inode totali nel filesystem */ + long f_ffree; /* inode liberi nel filesystem */ fsid_t f_fsid; /* filesystem id */ long f_namelen; /* lunghezza massima dei nomi dei file */ long f_spare[6]; /* riservati per uso futuro */ @@ -912,18 +912,18 @@ struct statfs { \end{lstlisting} \end{minipage} \normalsize - \caption{La struttura \var{statfs}.} + \caption{La struttura \structd{statfs}.} \label{fig:sys_statfs} \end{figure} Le \acr{glibc} provvedono infine una serie di funzioni per la gestione dei due -file \file{/etc/fstab} ed \file{/etc/mtab}, che convenzionalmente sono usati in -quasi tutti i sistemi unix-like per mantenere rispettivamente le informazioni -riguardo ai filesystem da montare e a quelli correntemente montati. Le -funzioni servono a leggere il contenuto di questi file in opportune strutture -\var{struct fstab} e \var{struct mntent}, e, per \file{/etc/mtab} per inserire -e rimuovere le voci presenti nel file. +file \file{/etc/fstab} ed \file{/etc/mtab}, che convenzionalmente sono usati +in quasi tutti i sistemi unix-like per mantenere rispettivamente le +informazioni riguardo ai filesystem da montare e a quelli correntemente +montati. Le funzioni servono a leggere il contenuto di questi file in +opportune strutture \struct{fstab} e \struct{mntent}, e, per \file{/etc/mtab} +per inserire e rimuovere le voci presenti nel file. In generale si dovrebbero usare queste funzioni (in particolare quelle relative a \file{/etc/mtab}), quando si debba scrivere un programma che @@ -975,7 +975,7 @@ Le due funzioni forniscono le informazioni memorizzate nel database degli utenti (che nelle versioni più recenti possono essere ottenute attraverso PAM) relative all'utente specificato attraverso il suo \acr{uid} o il nome di login. Entrambe le funzioni restituiscono un puntatore ad una struttura di -tipo \type{passwd} la cui definizione (anch'essa eseguita in \file{pwd.h}) è +tipo \struct{passwd} la cui definizione (anch'essa eseguita in \file{pwd.h}) è riportata in \figref{fig:sys_passwd_struct}, dove è pure brevemente illustrato il significato dei vari campi. @@ -996,8 +996,8 @@ struct passwd { \end{lstlisting} \end{minipage} \normalsize - \caption{La struttura \var{passwd} contenente le informazioni relative ad un - utente del sistema.} + \caption{La struttura \structd{passwd} contenente le informazioni relative ad + un utente del sistema.} \label{fig:sys_passwd_struct} \end{figure} @@ -1026,15 +1026,15 @@ essere rientranti, per cui ne esistono anche due versioni alternative In questo caso l'uso è molto più complesso, in quanto bisogna prima allocare la memoria necessaria a contenere le informazioni. In particolare i valori -della struttura \var{passwd} saranno restituiti all'indirizzo \param{password} -mentre la memoria allocata all'indirizzo \param{buffer}, per un massimo di -\param{buflen} byte, sarà utilizzata per contenere le stringhe puntate dai -campi di \param{password}. Infine all'indirizzo puntato da \param{result} -viene restituito il puntatore ai dati ottenuti, cioè \param{buffer} nel caso -l'utente esista, o \val{null} altrimenti. Qualora i dati non possano essere -contenuti nei byte specificati da \param{buflen}, la funzione fallirà -restituendo \errcode{ERANGE} (e \param{result} sarà comunque impostato a -\val{null}). +della struttura \struct{passwd} saranno restituiti all'indirizzo +\param{password} mentre la memoria allocata all'indirizzo \param{buffer}, per +un massimo di \param{buflen} byte, sarà utilizzata per contenere le stringhe +puntate dai campi di \param{password}. Infine all'indirizzo puntato da +\param{result} viene restituito il puntatore ai dati ottenuti, cioè +\param{buffer} nel caso l'utente esista, o \val{null} altrimenti. Qualora i +dati non possano essere contenuti nei byte specificati da \param{buflen}, la +funzione fallirà restituendo \errcode{ERANGE} (e \param{result} sarà comunque +impostato a \val{null}). Del tutto analoghe alle precedenti sono le funzioni \func{getgrnam} e \func{getgrgid} (e le relative analoghe rientranti con la stessa estensione @@ -1063,7 +1063,8 @@ loro prototipi sono: Il comportamento di tutte queste funzioni è assolutamente identico alle precedenti che leggono le informazioni sugli utenti, l'unica differenza è che in questo caso le informazioni vengono restituite in una struttura di tipo -\type{group}, la cui definizione è riportata in \figref{fig:sys_group_struct}. +\struct{group}, la cui definizione è riportata in +\figref{fig:sys_group_struct}. \begin{figure}[!htb] \footnotesize @@ -1079,8 +1080,8 @@ struct group { \end{lstlisting} \end{minipage} \normalsize - \caption{La struttura \var{group} contenente le informazioni relative ad un - gruppo del sistema.} + \caption{La struttura \structd{group} contenente le informazioni relative ad + un gruppo del sistema.} \label{fig:sys_group_struct} \end{figure} @@ -1223,12 +1224,12 @@ una voce con le funzioni \func{getutent}, \func{getutid}, \func{getutline} e \funcdecl{struct utmp *pututline(struct utmp *ut)} Scrive una voce nel database. - - \bodydesc{Le funzioni ritornano il puntatore ad una struttura \var{utmp} in - caso di successo e \val{null} in caso di errore.} + + \bodydesc{Le funzioni ritornano il puntatore ad una struttura \struct{utmp} + in caso di successo e \val{NULL} in caso di errore.} \end{functions} -Tutte queste funzioni fanno riferimento ad una struttura di tipo \var{utmp}, +Tutte queste funzioni fanno riferimento ad una struttura di tipo \struct{utmp}, la cui definizione in Linux è riportata in \secref{fig:sys_utmp_struct}. Le prime tre funzioni servono per leggere una voce dal database; \func{getutent} legge semplicemente la prima voce disponibile; le altre due permettono di @@ -1257,8 +1258,8 @@ struct utmp \end{lstlisting} \end{minipage} \normalsize - \caption{La struttura \var{utmp} contenente le informazioni di una voce del - database di \textit{accounting}.} + \caption{La struttura \structd{utmp} contenente le informazioni di una voce + del database di \textit{accounting}.} \label{fig:sys_utmp_struct} \end{figure} @@ -1276,7 +1277,7 @@ corrispondente al valore del campo \var{ut\_id} specificato in \param{ut}. \centering \begin{tabular}[c]{|l|p{8cm}|} \hline - \textbf{Funzione} & \textbf{Significato}\\ + \textbf{Valore} & \textbf{Significato}\\ \hline \hline \const{EMPTY} & Non contiene informazioni valide. \\ @@ -1342,13 +1343,13 @@ prototipi sono: \funcdecl{void logwtmp(const char *line, const char *name, const char *host)} Aggiunge nel database di accounting una voce con i valori specificati. - - \bodydesc{Le funzioni ritornano il puntatore ad una struttura \var{utmp} in - caso di successo e \val{null} in caso di errore.} + + \bodydesc{Le funzioni ritornano il puntatore ad una struttura \struct{utmp} + in caso di successo e \val{NULL} in caso di errore.} \end{functions} La prima funzione permette l'aggiunta di una voce a \file{wmtp} specificando -direttamente una struttura \type{utmp}, mentre la seconda utilizza gli +direttamente una struttura \struct{utmp}, mentre la seconda utilizza gli argomenti \param{line}, \param{name} e \param{host} per costruire la voce che poi aggiunge chiamando \func{updwtmp}. @@ -1369,7 +1370,7 @@ permettono di imporre a ciascuno di essi vincoli e limiti di utilizzo. Come abbiamo accennato in \secref{sec:proc_wait4} le informazioni riguardo l'utilizzo delle risorse da parte di un processo è mantenuto in una struttura -di tipo \code{struct }\type{rusage}, la cui definizione (che si trova in +di tipo \struct{rusage}, la cui definizione (che si trova in \file{sys/resource.h}) è riportata in \figref{fig:sys_rusage_struct}. \begin{figure}[!htb] @@ -1398,7 +1399,7 @@ struct rusage { \end{lstlisting} \end{minipage} \normalsize - \caption{La struttura \var{rusage} per la lettura delle informazioni dei + \caption{La struttura \structd{rusage} per la lettura delle informazioni dei delle risorse usate da un processo.} \label{fig:sys_rusage_struct} \end{figure} @@ -1420,8 +1421,8 @@ memoria per essere inserito nello swap. In genere includere esplicitamente \file{} non è più necessario, ma aumenta la portabilità, e serve comunque quando, come nella maggior parte -dei casi, si debba accedere ai campi di \var{rusage} relativi ai tempi di -utilizzo del processore, che sono definiti come \code{struct }\type{timeval}. +dei casi, si debba accedere ai campi di \struct{rusage} relativi ai tempi di +utilizzo del processore, che sono definiti come strutture \struct{timeval}. Questa è la stessa struttura utilizzata da \func{wait4} per ricavare la @@ -1438,7 +1439,7 @@ funzione \func{getrusage}, il cui prototipo \bodydesc{La funzione ritorna 0 in caso di successo e -1 in caso di errore, - nel qual caso \var{errno} può essere \const{EINVAL} o \const{EFAULT}.} + nel qual caso \var{errno} può essere \errval{EINVAL} o \errval{EFAULT}.} \end{functions} L'argomento \param{who} permette di specificare il processo di cui si vuole @@ -1463,7 +1464,7 @@ In generale il primo viene chiamato un limite \textsl{soffice} (o \textit{soft limit}) dato che il suo valore può essere aumentato, mentre il secondo è detto \textsl{duro} (o \textit{hard limit}), in quanto un processo normale non può modificarne il valore. Il valore di questi limiti è mantenuto in una -struttura \var{rlimit}, la cui definizione è riportata in +struttura \struct{rlimit}, la cui definizione è riportata in \figref{fig:sys_rlimit_struct}, ed i cui campi corrispondono appunto a limite corrente e massimo. @@ -1479,7 +1480,7 @@ struct rlimit { \end{lstlisting} \end{minipage} \normalsize - \caption{La struttura \var{rlimit} per impostare i limiti di utilizzo + \caption{La struttura \structd{rlimit} per impostare i limiti di utilizzo delle risorse usate da un processo.} \label{fig:sys_rlimit_struct} \end{figure} @@ -1509,12 +1510,12 @@ prototipi sono: \item[\errcode{EPERM}] Un processo senza i privilegi di amministratore ha cercato di innalzare i propri limiti. \end{errlist} - ed \const{EFAULT}.} + ed \errval{EFAULT}.} \end{functions} Entrambe le funzioni permettono di specificare su quale risorsa si vuole operare attraverso \param{resource}, i cui possibili valori sono elencati in -\secref{tab:sys_rlimit_values}, e utilizzano una struttura \var{rlimit} per +\secref{tab:sys_rlimit_values}, e utilizzano una struttura \struct{rlimit} per specificarne i valori. \begin{table}[htb] @@ -1612,7 +1613,7 @@ dimensione delle pagine di memoria; il suo prototipo sono previsti errori.} \end{prototype} -La funzione è prevista in SVr4, 4.4BSD e SUSv2, anche se questo ultimo +La funzione è prevista in SVr4, BSD 4.4 e SUSv2, anche se questo ultimo standard la etichetta come obsoleta, mentre lo standard POSIX 1003.1-2001 la ha eliminata. In Linux è implementata come una system call nelle architetture in cui essa è necessaria, ed in genere restituisce il valore del simbolo @@ -1661,11 +1662,11 @@ Il suo prototipo \end{prototype} La funzione restituisce in ciascun elemento di \param{loadavg} il numero medio -di processi attivi sulla coda dello scheduler, calcolato su un diverso -intervalli di tempo. Il numero di intervalli che si vogliono leggere è -specificato da \param{nelem}, dato che nel caso di Linux il carico viene -valutato solo su tre intervalli (corrispondenti a 1, 5 e 15 minuti), questo è -anche il massimo valore che può essere assegnato a questo argomento. +di processi attivi sulla coda dello scheduler\index{scheduler}, calcolato su +un diverso intervalli di tempo. Il numero di intervalli che si vogliono +leggere è specificato da \param{nelem}, dato che nel caso di Linux il carico +viene valutato solo su tre intervalli (corrispondenti a 1, 5 e 15 minuti), +questo è anche il massimo valore che può essere assegnato a questo argomento. @@ -1788,7 +1789,7 @@ possono essere letti attraverso la funzione \func{times}, il cui prototipo \end{prototype} La funzione restituisce i valori di process time del processo corrente in una -struttura di tipo \var{tms}, la cui definizione è riportata in +struttura di tipo \struct{tms}, la cui definizione è riportata in \secref{fig:sys_tms_struct}. La struttura prevede quattro campi; i primi due, \var{tms\_utime} e \var{tms\_stime}, sono l'\textit{user time} ed il \textit{system time} del processo, così come definiti in @@ -1808,7 +1809,7 @@ struct tms { \end{lstlisting} \end{minipage} \normalsize - \caption{La struttura \var{tms} dei tempi di processore associati a un + \caption{La struttura \structd{tms} dei tempi di processore associati a un processo.} \label{fig:sys_tms_struct} \end{figure} @@ -1840,7 +1841,7 @@ in nel suddetto formato; il suo prototipo Legge il valore corrente del \textit{calendar time}. \bodydesc{La funzione ritorna il valore del \textit{calendar time} in caso - di successo e -1 in caso di errore, che può essere solo \const{EFAULT}.} + di successo e -1 in caso di errore, che può essere solo \errval{EFAULT}.} \end{prototype} \noindent dove \param{t}, se non nullo, deve essere l'indirizzo di una variabile su cui duplicare il valore di ritorno. @@ -1852,7 +1853,7 @@ sia necessario; il suo prototipo Imposta a \param{t} il valore corrente del \textit{calendar time}. \bodydesc{La funzione ritorna 0 in caso di successo e -1 in caso di errore, - che può essere \const{EFAULT} o \const{EPERM}.} + che può essere \errval{EFAULT} o \errval{EPERM}.} \end{prototype} \noindent dato che modificare l'ora ha un impatto su tutto il sistema il cambiamento dell'orologio è una operazione privilegiata e questa funzione @@ -1882,12 +1883,12 @@ sono: \bodydesc{Entrambe le funzioni restituiscono 0 in caso di successo e -1 in caso di errore, nel qual caso \var{errno} può assumere i valori - \const{EINVAL} \const{EFAULT} e per \func{settimeofday} anche - \const{EPERM}.} + \errval{EINVAL} \errval{EFAULT} e per \func{settimeofday} anche + \errval{EPERM}.} \end{functions} -Queste funzioni utilizzano una struttura di tipo \var{timeval}, la cui -definizione, insieme a quella della analoga \var{timespec}, è riportata in +Queste funzioni utilizzano una struttura di tipo \struct{timeval}, la cui +definizione, insieme a quella della analoga \struct{timespec}, è riportata in \figref{fig:sys_timeval_struct}. Le \acr{glibc} infatti forniscono queste due rappresentazioni alternative del \textit{calendar time} che rispetto a \type{time\_t} consentono rispettivamente precisioni del microsecondo e del @@ -1911,7 +1912,7 @@ struct timespec { \end{lstlisting} \end{minipage} \normalsize - \caption{Le strutture \var{timeval} e \var{timespec} usate per una + \caption{Le strutture \structd{timeval} e \structd{timespec} usate per una rappresentazione ad alta risoluzione del \textit{calendar time}.} \label{fig:sys_timeval_struct} \end{figure} @@ -1920,8 +1921,8 @@ Come nel caso di \func{stime} anche \func{settimeofday} (e qualunque funzione vada a modificare l'orologio di sistema, come quelle che tratteremo in seguito) può essere utilizzata solo da un processo coi privilegi di amministratore. Il secondo parametro di entrambe le funzioni è una struttura -\var{timezone}, che storicamente veniva utilizzata per specificare appunto la -\textit{time zone}, cioè l'insieme del fuso orario e delle convenzioni per +\struct{timezone}, che storicamente veniva utilizzata per specificare appunto +la \textit{time zone}, cioè l'insieme del fuso orario e delle convenzioni per l'ora legale che permettevano il passaggio dal tempo universale all'ora locale. Questo parametro è obsoleto e in Linux non è mai stato utilizzato e non è supportato né dalle vecchie \textsl{libc5}, né dalle \textsl{glibc}: @@ -1961,14 +1962,14 @@ modificare anche la velocit \bodydesc{La funzione restituisce lo stato dell'orologio (un valore $>0$) in caso di successo e -1 in caso di errore, nel qual caso \var{errno} - assumerà i valori \const{EFAULT}, \const{EINVAL} ed \const{EPERM}.} + assumerà i valori \errval{EFAULT}, \errval{EINVAL} ed \errval{EPERM}.} \end{prototype} -La funzione richiede una struttura di tipo \var{timex}, la cui definizione, +La funzione richiede una struttura di tipo \struct{timex}, la cui definizione, così come effettuata in \file{sys/timex.h}, è riportata in \figref{fig:sys_timex_struct}. L'azione della funzione dipende dal valore del campo \var{mode}, che specifica quale parametro dell'orologio di sistema, -specificato in un opportuno campo di \var{timex}, deve essere impostato. Un +specificato in un opportuno campo di \struct{timex}, deve essere impostato. Un valore nullo serve per leggere i parametri correnti; i valori diversi da zero devono essere specificati come OR binario delle costanti riportate in \secref{tab:sys_timex_mode}. @@ -2001,7 +2002,8 @@ struct timex { \end{lstlisting} \end{minipage} \normalsize - \caption{La struttura \var{timex} per il controllo dell'orologio di sistema.} + \caption{La struttura \structd{timex} per il controllo dell'orologio di + sistema.} \label{fig:sys_timex_struct} \end{figure} @@ -2012,7 +2014,7 @@ anche un suo omonimo \func{ntp\_adjtime}. La trattazione completa di questa funzione necessita di una lettura approfondita del meccanismo descritto nell'RFC~1305, ci limitiamo a descrivere in \tabref{tab:sys_timex_mode} i principali valori utilizzabili per il campo \var{mode}, un elenco più -dettagliato del significato dei vari campi della struttura \var{timex} può +dettagliato del significato dei vari campi della struttura \struct{timex} può essere ritrovato in \cite{glibc}. \begin{table}[htb] @@ -2027,33 +2029,33 @@ essere ritrovato in \cite{glibc}. reale e l'orologio di sistema, che deve essere indicata in microsecondi nel campo \var{offset} di - \var{timex}.\\ + \struct{timex}.\\ \const{ADJ\_FREQUENCY} & 0x0002 & Imposta la differenze in frequenza fra il tempo reale e l'orologio di sistema, che deve essere indicata in parti per milione nel campo - \var{frequency} di \var{timex}.\\ + \var{frequency} di \struct{timex}.\\ \const{ADJ\_MAXERROR} & 0x0004 & Imposta il valore massimo dell'errore sul tempo, espresso in microsecondi nel campo \var{maxerror} di - \var{timex}.\\ + \struct{timex}.\\ \const{ADJ\_ESTERROR} & 0x0008 & Imposta la stima dell'errore sul tempo, espresso in microsecondi nel campo \var{esterror} di - \var{timex}.\\ + \struct{timex}.\\ \const{ADJ\_STATUS} & 0x0010 & Imposta alcuni valori di stato interni usati dal sistema nella gestione dell'orologio specificati nel campo - \var{status} di \var{timex}.\\ + \var{status} di \struct{timex}.\\ \const{ADJ\_TIMECONST} & 0x0020 & Imposta la larghezza di banda del PLL implementato dal kernel, specificato nel campo - \var{constant} di \var{timex}.\\ + \var{constant} di \struct{timex}.\\ \const{ADJ\_TICK} & 0x4000 & Imposta il valore dei tick del timer in microsecondi, espresso nel campo - \var{tick} di \var{timex}.\\ + \var{tick} di \struct{timex}.\\ \const{ADJ\_OFFSET\_SINGLESHOT}&0x8001&Imposta uno spostamento una tantum dell'orologio secondo il valore del campo \var{offset} simulando il @@ -2061,7 +2063,7 @@ essere ritrovato in \cite{glibc}. \hline \end{tabular} \caption{Costanti per l'assegnazione del valore del campo \var{mode} della - struttura \var{timex}.} + struttura \struct{timex}.} \label{tab:sys_timex_mode} \end{table} @@ -2129,18 +2131,18 @@ struct tm { \end{lstlisting} \end{minipage} \normalsize - \caption{La struttura \var{tm} per una rappresentazione del tempo in termini - di ora, minuti, secondi, ecc.} + \caption{La struttura \structd{tm} per una rappresentazione del tempo in + termini di ora, minuti, secondi, ecc.} \label{fig:sys_tm_struct} \end{figure} -Questo viene effettuato attraverso una opportuna struttura \var{tm}, la cui +Questo viene effettuato attraverso una opportuna struttura \struct{tm}, la cui definizione è riportata in \figref{fig:sys_tm_struct}, ed è in genere questa struttura che si utilizza quando si deve specificare un tempo a partire dai dati naturali (ora e data), dato che essa consente anche di trattare la gestione del fuso orario e dell'ora legale.\footnote{in realtà i due campi \var{tm\_gmtoff} e \var{tm\_zone} sono estensioni previste da BSD e dalle - \acr{glibc}, che, quando è definita \const{\_BSD\_SOURCE}, hanno la forma in + \acr{glibc}, che, quando è definita \macro{\_BSD\_SOURCE}, hanno la forma in \figref{fig:sys_tm_struct}.} Le funzioni per la gestione del \textit{broken-down time} sono varie e vanno @@ -2189,7 +2191,7 @@ l'utente deve specificare il buffer su cui la stringa deve essere copiata (deve essere di almeno 26 caratteri). Le altre tre funzioni, \func{gmtime}, \func{localtime} e \func{mktime} servono -per convertire il tempo dal formato \type{time\_t} a quello di \var{tm} e +per convertire il tempo dal formato \type{time\_t} a quello di \struct{tm} e viceversa; \func{gmtime} effettua la conversione usando il tempo coordinato universale (UTC), cioè l'ora di Greenwich; mentre \func{localtime} usa l'ora locale; \func{mktime} esegue la conversione inversa. @@ -2206,7 +2208,7 @@ locale, compresa l'eventuale ora legale. Questo viene fatto attraverso le tre variabili globali mostrate in \figref{fig:sys_tzname}, cui si accede quando si include \file{time.h}. Queste variabili vengono impostate quando si chiama una delle precedenti funzioni di conversione, oppure invocando direttamente la -funzione \func{tzset}, il cui prototipo è: +funzione \funcd{tzset}, il cui prototipo è: \begin{prototype}{sys/timex.h} {void tzset(void)} @@ -2344,17 +2346,17 @@ Per riportare il tipo di errore il sistema usa la variabile globale anche di definire \var{errno} come un \textit{modifiable lvalue}, quindi si può anche usare una macro, e questo è infatti il modo usato da Linux per renderla locale ai singoli thread.} definita nell'header \file{errno.h}; la -variabile è in genere definita come \ctyp{volatile} dato che può essere -cambiata in modo asincrono da un segnale (si veda \ref{sec:sig_sigchld} per un -esempio, ricordando quanto trattato in \ref{sec:proc_race_cond}), ma dato che -un manipolatore di segnale scritto bene salva e ripristina il valore della -variabile, di questo non è necessario preoccuparsi nella programmazione +variabile è in genere definita come \direct{volatile} dato che può essere +cambiata in modo asincrono da un segnale (si veda \secref{sec:sig_sigchld} per +un esempio, ricordando quanto trattato in \secref{sec:proc_race_cond}), ma +dato che un manipolatore di segnale scritto bene salva e ripristina il valore +della variabile, di questo non è necessario preoccuparsi nella programmazione normale. I valori che può assumere \var{errno} sono riportati in \capref{cha:errors}, nell'header \file{errno.h} sono anche definiti i nomi simbolici per le costanti numeriche che identificano i vari errori; essi iniziano tutti per -\var{E} e si possono considerare come nomi riservati. In seguito faremo +\val{E} e si possono considerare come nomi riservati. In seguito faremo sempre riferimento a tali valori, quando descriveremo i possibili errori restituiti dalle funzioni. Il programma di esempio \cmd{errcode} stampa il codice relativo ad un valore numerico con l'opzione \cmd{-l}. @@ -2386,7 +2388,7 @@ prima funzione che si pu \bodydesc{La funzione ritorna il puntatore alla stringa col messaggio di errore in caso di successo e \val{null} in caso di errore, nel qual caso - \var{errno} assumerà il valore \const{EINVAL} se si è specificato un + \var{errno} assumerà il valore \errval{EINVAL} se si è specificato un numero di errore non valido.} \end{prototype} @@ -2394,7 +2396,7 @@ In generale \func{strerror} viene usata passando \var{errno} come parametro; nel caso si specifichi un codice sbagliato verrà restituito un messaggio di errore sconosciuto, e la funzione restituirà come errore \errcode{EINVAL}. La funzione tiene conto del valore della variabile di ambiente -\const{LC\_MESSAGES} per usare eventuali traduzioni dei messaggi d'errore +\val{LC\_MESSAGES} per usare eventuali traduzioni dei messaggi d'errore nella localizzazione presente. La funzione utilizza una stringa statica che non deve essere modificata dal @@ -2412,8 +2414,8 @@ thread (compreso il terminatore) \param{size}. \bodydesc{La funzione restituisce il puntatore alla stringa; in caso di - errore \var{errno} oltre a \const{EINVAL} può assumere anche il valore - \const{ERANGE} per indicare che non c'è sufficiente memoria per contenere + errore \var{errno} oltre a \errval{EINVAL} può assumere anche il valore + \errval{ERANGE} per indicare che non c'è sufficiente memoria per contenere la stringa di descrizione.} \end{prototype} \noindent @@ -2430,13 +2432,13 @@ automatizzata sullo standard error (vedi \secref{sec:file_std_descr}) \func{perror}, il cui prototipo è: \begin{prototype}{stdio.h}{void perror(const char *message)} Stampa il messaggio di errore relativo al valore corrente di \var{errno} - sullo standard error; preceduto dalla stringa \var{message}. + sullo standard error; preceduto dalla stringa \param{message}. \end{prototype} I messaggi di errore stampati sono gli stessi di \func{strerror}, (riportati in \capref{cha:errors}), e, usando il valore corrente di \var{errno}, si riferiscono all'ultimo errore avvenuto. La stringa specificata con -\var{message} viene stampato prime del messaggio d'errore, seguita dai due +\param{message} viene stampato prime del messaggio d'errore, seguita dai due punti e da uno spazio, il messaggio è terminato con un a capo. Il messaggio può essere riportato anche usando altre variabili globali