Le librerie standard del C consentono comunque, nel caso non sia presente una
specifica funzione di libreria corrispondente, di eseguire una \textit{system
call} generica tramite la funzione \funcd{syscall}, il cui prototipo,
-accessible se si è definita la macro \macro{\_GNU\_SOURCE}, (vedi
+accessibile se si è definita la macro \macro{\_GNU\_SOURCE}, (vedi
sez.~\ref{sec:intro_gcc_glibc_std}) è:
\begin{functions}
\headdecl{unistd.h}
\item a partire dalla versione 2.3.3 delle \acr{glibc} un valore maggiore o
uguale a ``\texttt{200112L}'' rende disponibili le funzionalità di base
previste dallo standard POSIX.1-2001, escludendo le estensioni XSI;
+ \item a partire dalla versione 2.10 delle \acr{glibc} un valore maggiore o
+ uguale a ``\texttt{200809L}'' rende disponibili le funzionalità di base
+ previste dallo standard POSIX.1-2008, escludendo le estensioni XSI;
\item in futuro valori superiori potranno abilitare ulteriori estensioni.
\end{itemize}
``\texttt{600}'' o superiore rende disponibili anche le funzionalità
introdotte con SUSv3, corrispondenti allo standard POSIX.1-2001 più le
estensioni XSI.
+ \item a partire dalla versione 2.10 delle \acr{glibc} un valore uguale a
+ ``\texttt{700}'' o superiore rende disponibili anche le funzionalità
+ introdotte con SUSv4, corrispondenti allo standard POSIX.1-2008 più le
+ estensioni XSI.
\end{itemize}
\item[\macro{\_XOPEN\_SOURCE\_EXTENDED}] definendo questa macro si rendono
estensione ad uso di transizione per le \textit{Single UNIX Specification},
per consentire la gestione di file di grandi dimensioni anche nei sistemi a
32 bit, in cui la dimensione massima, espressa con un intero, non poteva
- superare i 2 gigabyte. Nei nuovi programmi queste funzioni devono essere
- evitate, a favore dell'uso macro \macro{\_FILE\_OFFSET\_BITS}, che definita
- al valore di \texttt{64} consente di usare in maniera trasparente le
- funzioni dell'interfaccia classica.
+ superare i 2Gb. Nei nuovi programmi queste funzioni devono essere evitate,
+ a favore dell'uso macro \macro{\_FILE\_OFFSET\_BITS}, che definita al valore
+ di \texttt{64} consente di usare in maniera trasparente le funzioni
+ dell'interfaccia classica.
\item[\macro{\_FILE\_OFFSET\_BITS}] la definizione di questa macro al valore
di \texttt{64} consente di attivare la conversione automatica di tutti i
di base che non cambiano il comportamento dei programmi se si richiede una
ottimizzazione di livello uno o superiore,\footnote{vale a dire se si usa
l'opzione \texttt{-O1} o superiore del \texttt{gcc}.} mentre con il
- valore \texttt{2} vengono aggiunti maggiori controlli.
+ valore \texttt{2} vengono aggiunti maggiori controlli. Dato che alcuni dei
+ controlli vengono effettuati in fase di compilazione l'uso di questa macro
+ richiede anche la collaborazione del compilatore, disponibile dalla
+ versione 4.0 del \texttt{gcc}.
\end{basedescript}
Se non è stata specificata esplicitamente nessuna di queste macro il default
assunto è che siano definite \macro{\_BSD\_SOURCE}, \macro{\_SVID\_SOURCE},
-\macro{\_POSIX\_SOURCE}, e \macro{\_POSIX\_C\_SOURCE} con valore
-``\texttt{200112L}'' (o ``\texttt{199506L}'' per le versioni delle \acr{glibc}
-precedenti la 2.4). Si ricordi infine che perché queste macro abbiano effetto
-devono essere sempre definite prima dell'inclusione dei file di dichiarazione.
+\macro{\_POSIX\_SOURCE} e, con le \acr{glibc} più recenti, che la macro
+\macro{\_POSIX\_C\_SOURCE} abbia il valore ``\texttt{200809L}'', per versioni
+precedenti delle \acr{glibc} il valore assegnato a \macro{\_POSIX\_C\_SOURCE}
+era di ``\texttt{200112L}'' prima delle 2.10, di ``\texttt{199506L}'' prima
+delle 2.4, di ``\texttt{199506L}'' prima delle 2.1. Si ricordi infine che
+perché queste macro abbiano effetto devono essere sempre definite prima
+dell'inclusione dei file di dichiarazione.
% vedi anche man feature_test_macros
% LocalWords: Technical TC SUS Opengroup features STRICT std ATFILE fseeko
% LocalWords: ftello fseek ftell lseek FORTIFY REENTRANT SAFE overflow memcpy
% LocalWords: mempcpy memmove memset stpcpy strcpy strncpy strcat strncat gets
-% LocalWords: sprintf snprintf vsprintf vsnprintf
+% LocalWords: sprintf snprintf vsprintf vsnprintf syscall number calendar BITS
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "gapil"
%%% End:
+% LocalWords: pathname