X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=system.tex;h=cd62e7c97e325d3c8a6334ecaca66d0100c85d56;hp=70b7f0b327ad28ef3c6085a743aff9e72c0efd82;hb=4cbeb0e4fa1d31da798c8e68108eb6785586ab34;hpb=9a577c89dd563aacbc619e09bf8b6d99b533274a diff --git a/system.tex b/system.tex index 70b7f0b..cd62e7c 100644 --- a/system.tex +++ b/system.tex @@ -1496,7 +1496,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard \errcode{ENOMEM}, mentre se il superamento viene causato dalla crescita dello \itindex{stack} \textit{stack} il processo riceverà un segnale di - \const{SIGSEGV}.\\ + \signal{SIGSEGV}.\\ \const{RLIMIT\_CORE} & La massima dimensione per di un file di \itindex{core~dump} \textit{core dump} (vedi sez.~\ref{sec:sig_prog_error}) creato nella @@ -1508,13 +1508,13 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard sez.~\ref{sec:sys_cpu_times}) che il processo può usare. Il superamento del limite corrente comporta l'emissione di un segnale di - \const{SIGXCPU}, la cui azione predefinita (vedi + \signal{SIGXCPU}, la cui azione predefinita (vedi sez.~\ref{sec:sig_classification}) è terminare il processo, una volta al secondo fino al raggiungimento del limite massimo. Il superamento del limite massimo comporta l'emissione di un segnale di - \const{SIGKILL}.\footnotemark\\ + \signal{SIGKILL}.\footnotemark\\ \const{RLIMIT\_DATA} & La massima dimensione del \index{segmento!dati} segmento dati di un processo (vedi sez.~\ref{sec:proc_mem_layout}). @@ -1525,7 +1525,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard \const{RLIMIT\_FSIZE} & La massima dimensione di un file che un processo può creare. Se il processo cerca di scrivere oltre questa dimensione riceverà un segnale di - \const{SIGXFSZ}, che di norma termina il + \signal{SIGXFSZ}, che di norma termina il processo; se questo viene intercettato la system call che ha causato l'errore fallirà con un errore di \errcode{EFBIG}.\\ @@ -1568,7 +1568,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard \textit{stack} del processo. Se il processo esegue operazioni che estendano lo \textit{stack} oltre questa dimensione - riceverà un segnale di \const{SIGSEGV}.\\ + riceverà un segnale di \signal{SIGSEGV}.\\ \const{RLIMIT\_RSS} & L'ammontare massimo di pagine di memoria dato al \index{segmento!testo} testo del processo. Il limite è solo una indicazione per il kernel, @@ -1587,7 +1587,7 @@ fatto solo fino al valore del secondo, che per questo viene detto \textit{hard oggi (la 2.6.x); altri kernel possono avere comportamenti diversi per quanto avviene quando viene superato il \textit{soft limit}; perciò per avere operazioni portabili è sempre opportuno intercettare il primo - \const{SIGXCPU} e terminare in maniera ordinata il processo.} + \signal{SIGXCPU} e terminare in maniera ordinata il processo.} \footnotetext{il limite su questa risorsa è stato introdotto con il kernel 2.6.8.} @@ -2326,10 +2326,11 @@ restituita la conversione. Come mostrato in fig.~\ref{fig:sys_tm_struct} il \textit{broken-down time} permette di tenere conto anche della differenza fra tempo universale e ora locale, compresa l'eventuale ora legale. Questo viene fatto attraverso le tre -variabili globali mostrate in fig.~\ref{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 \funcd{tzset}, il cui prototipo è: +\index{variabili!globali} variabili globali mostrate in +fig.~\ref{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 +\funcd{tzset}, il cui prototipo è: \begin{prototype}{sys/timex.h} {void tzset(void)} @@ -2349,8 +2350,8 @@ verrà usato il file \conffile{/etc/localtime}. \includestruct{listati/time_zone_var.c} \end{minipage} \normalsize - \caption{Le variabili globali usate per la gestione delle \textit{time - zone}.} + \caption{Le \index{variabili!globali} variabili globali usate per la + gestione delle \textit{time zone}.} \label{fig:sys_tzname} \end{figure} @@ -2465,12 +2466,12 @@ c'è stato un errore. Di solito questo valore è -1 o un puntatore nullo o la costante \val{EOF} (a seconda della funzione); ma questo valore segnala solo che c'è stato un errore, non il tipo di errore. -Per riportare il tipo di errore il sistema usa la variabile globale -\var{errno},\footnote{l'uso di una variabile globale può comportare alcuni - problemi (ad esempio nel caso dei \itindex{thread} \textit{thread}) ma lo - standard ISO C consente 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 +Per riportare il tipo di errore il sistema usa \index{variabili!globali} la +variabile globale \var{errno},\footnote{l'uso di una variabile globale può + comportare alcuni problemi (ad esempio nel caso dei \itindex{thread} + \textit{thread}) ma lo standard ISO C consente 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 \itindex{thread} \textit{thread}.} definita nell'header \file{errno.h}; la variabile è in genere definita come \direct{volatile} dato che può essere cambiata in modo asincrono da un segnale (si veda sez.~\ref{sec:sig_sigchld} @@ -2579,7 +2580,8 @@ riferiscono all'ultimo errore avvenuto. La stringa specificata con \param{message} viene stampato prima 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 le due variabili globali: +Il messaggio può essere riportato anche usando le due +\index{variabili!globali} variabili globali: \includecodesnip{listati/errlist.c} dichiarate in \file{errno.h}. La prima contiene i puntatori alle stringhe di errore indicizzati da \var{errno}; la seconda esprime il valore più alto per @@ -2648,8 +2650,9 @@ l'argomento \param{format} prende la stessa sintassi di \func{printf}, ed i relativi argomenti devono essere forniti allo stesso modo, mentre \param{errnum} indica l'errore che si vuole segnalare (non viene quindi usato il valore corrente di \var{errno}); la funzione stampa sullo standard error il -nome del programma, come indicato dalla variabile globale \var{program\_name}, -seguito da due punti ed uno spazio, poi dalla stringa generata da +nome del programma, come indicato dalla \index{variabili!globali} variabile +globale \var{program\_name}, seguito da due punti ed uno spazio, poi dalla +stringa generata da \param{format} e dagli argomenti seguenti, seguita da due punti ed uno spazio infine il messaggio di errore relativo ad \param{errnum}, il tutto è terminato da un a capo. @@ -2663,8 +2666,8 @@ L'argomento \param{status} può essere usato per terminare direttamente il programma in caso di errore, nel qual caso \func{error} dopo la stampa del messaggio di errore chiama \func{exit} con questo stato di uscita. Se invece il valore è nullo \func{error} ritorna normalmente ma viene incrementata -un'altra variabile globale, \var{error\_message\_count}, che tiene conto di -quanti errori ci sono stati. +un'altra \index{variabili!globali} variabile globale, +\var{error\_message\_count}, che tiene conto di quanti errori ci sono stati. Un'altra funzione per la stampa degli errori, ancora più sofisticata, che prende due argomenti aggiuntivi per indicare linea e file su cui è avvenuto @@ -2680,9 +2683,10 @@ Stampa un messaggio di errore formattato. \noindent ed il suo comportamento è identico a quello di \func{error} se non per il fatto che, separati con il solito due punti-spazio, vengono inseriti un nome di file indicato da \param{fname} ed un numero di linea subito dopo la -stampa del nome del programma. Inoltre essa usa un'altra variabile globale, -\var{error\_one\_per\_line}, che impostata ad un valore diverso da zero fa si -che errori relativi alla stessa linea non vengano ripetuti. +stampa del nome del programma. Inoltre essa usa un'altra +\index{variabili!globali} variabile globale, \var{error\_one\_per\_line}, che +impostata ad un valore diverso da zero fa si che errori relativi alla stessa +linea non vengano ripetuti. % LocalWords: filesystem like kernel saved header limits sysconf sez tab float