X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=system.tex;h=69d6036231267f1956bd5c1e17b253e43dd87a67;hp=ec2f1b6a14fc0df116a0c36bc1fddfc5fc52616e;hb=ff2d0141751ed62ef56e5bfd226c589311b8b669;hpb=46029a05c9009df38022e82b0f20732290388ef1 diff --git a/system.tex b/system.tex index ec2f1b6..69d6036 100644 --- a/system.tex +++ b/system.tex @@ -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} @@ -886,12 +886,12 @@ informazioni riguardo al filesystem su cui si trova un certo file, sono 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 @@ -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} @@ -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 @@ -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} @@ -1514,7 +1515,7 @@ prototipi sono: 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] @@ -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} @@ -1886,8 +1887,8 @@ sono: \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}: @@ -1964,11 +1965,11 @@ modificare anche la velocit 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,12 +2131,12 @@ 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 @@ -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)} @@ -2354,7 +2356,7 @@ 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}. @@ -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