\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
\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}\\
\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
\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
\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\\
\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} &
\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\\
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}
% \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}
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
\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
\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}
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}
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},
\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 è
\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
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 */
\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
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.
\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}
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
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
\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}
\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
\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}
\centering
\begin{tabular}[c]{|l|p{8cm}|}
\hline
- \textbf{Funzione} & \textbf{Significato}\\
+ \textbf{Valore} & \textbf{Significato}\\
\hline
\hline
\const{EMPTY} & Non contiene informazioni valide. \\
\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}.
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]
\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}
In genere includere esplicitamente \file{<sys/time.h>} 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
\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
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.
\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}
\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]
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
\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.
\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
\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}
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.
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
\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
\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}
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}:
\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}.
\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}
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]
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
\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}
\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
(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.
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)}
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}.
\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}
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
(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
\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