X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileio.tex;h=b7db3a7073279bd39e6d0f957d7aff27a873c552;hp=3091504cb8af091ebc5ed9d3bcf7e1cc82337b2c;hb=c6998e1daad18f2bf10b0dbff8c7441139a27795;hpb=de137402ded9a730854f908315767d73c5308d9d diff --git a/fileio.tex b/fileio.tex index 3091504..b7db3a7 100644 --- a/fileio.tex +++ b/fileio.tex @@ -1,6 +1,6 @@ %% fileio.tex (merge fileunix.tex - filestd.tex) %% -%% Copyright (C) 2000-2016 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2018 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free %% Documentation License, Version 1.1 or any later version published by the %% Free Software Foundation; with the Invariant Sections being "Un preambolo", @@ -1194,7 +1194,7 @@ situazione è illustrata in fig.~\ref{fig:file_acc_child}; dato che il processo figlio riceve una copia dello spazio di indirizzi del padre, riceverà anche una copia di \kstruct{file\_struct} e della relativa tabella dei file aperti. -Questo significa che il figlio avrà gli stessi file aperti del padre, in +Questo significa che il figlio avrà gli stessi file aperti del padre in quanto la sua \kstruct{file\_struct}, pur essendo allocata in maniera indipendente, contiene gli stessi valori di quella del padre e quindi i suoi file descriptor faranno riferimento alla stessa voce nella \textit{file @@ -2222,6 +2222,9 @@ il nome indicato nel precedente prototipo), è riportata di seguito: \end{basedescript} +% TODO: trattare RWH_WRITE_LIFE_EXTREME e RWH_WRITE_LIFE_SHORT aggiunte con +% il kernel 4.13 (vedi https://lwn.net/Articles/727385/) + La maggior parte delle funzionalità controllate dai comandi di \func{fcntl} sono avanzate e richiedono degli approfondimenti ulteriori, saranno pertanto riprese più avanti quando affronteremo le problematiche ad esse relative. In @@ -2232,10 +2235,10 @@ sez.~\ref{sec:file_asyncronous_operation} mentre quelle relative al di questa funzione con i socket verrà trattato in sez.~\ref{sec:sock_ctrl_func}. -La gran parte dei comandi di \func{fcntl} (\const{F\_DUPFD}, \const{F\_GETFD}, -\const{F\_SETFD}, \const{F\_GETFL}, \const{F\_SETFL}, \const{F\_GETLK}, -\const{F\_SETLK} e \const{F\_SETLKW}) sono previsti da SVr4 e 4.3BSD e -standardizzati in POSIX.1-2001 che inoltre prevede gli ulteriori +La gran parte dei comandi di \func{fcntl} (come \const{F\_DUPFD}, +\const{F\_GETFD}, \const{F\_SETFD}, \const{F\_GETFL}, \const{F\_SETFL}, +\const{F\_GETLK}, \const{F\_SETLK} e \const{F\_SETLKW}) sono previsti da SVr4 +e 4.3BSD e standardizzati in POSIX.1-2001 che inoltre prevede gli ulteriori \const{F\_GETOWN} e \const{F\_SETOWN}. Pertanto nell'elenco si sono indicate esplicitamente soltanto le ulteriori richieste in termini delle macro di funzionalità di sez.~\ref{sec:intro_gcc_glibc_std} soltanto per le @@ -2394,6 +2397,7 @@ due funzioni sono rimaste. % TODO trovare qualche posto per la eventuale documentazione delle seguenti % (bassa/bassissima priorità) % EXT4_IOC_MOVE_EXT (dal 2.6.31) +% EXT4_IOC_SHUTDOWN (dal 4.10), XFS_IOC_GOINGDOWN e futura FS_IOC_SHUTDOWN % ioctl di btrfs, vedi http://lwn.net/Articles/580732/ % \chapter{} @@ -3036,16 +3040,16 @@ di architettura hardware, come la dimensione del bus o la modalità di ordinamento dei bit o il formato delle variabili in floating point. Per questo motivo quando si usa l'input/output binario occorre sempre prendere -le opportune precauzioni (in genere usare un formato di più alto livello che -permetta di recuperare l'informazione completa), per assicurarsi che versioni -diverse del programma siano in grado di rileggere i dati tenendo conto delle +le opportune precauzioni come usare un formato di più alto livello che +permetta di recuperare l'informazione completa, per assicurarsi che versioni +diverse del programma siano in grado di rileggere i dati, tenendo conto delle eventuali differenze. -Le \acr{glibc} definiscono altre due funzioni per l'I/O binario, -\funcd{fread\_unlocked} e \funcd{fwrite\_unlocked} che evitano il lock -implicito dello \textit{stream}, usato per dalla librerie per la gestione -delle applicazioni \textit{multi-thread} (si veda -sez.~\ref{sec:file_stream_thread} per i dettagli), i loro prototipi sono: +Le \acr{glibc} definiscono infine due ulteriori funzioni per l'I/O binario, +\funcd{fread\_unlocked} e \funcd{fwrite\_unlocked}, che evitano il lock +implicito dello \textit{stream} usato per dalla librerie per la gestione delle +applicazioni \textit{multi-thread} (si veda sez.~\ref{sec:file_stream_thread} +per i dettagli), i loro prototipi sono: \begin{funcproto}{ \fhead{stdio.h} @@ -4025,7 +4029,7 @@ scelta, si può forzare lo scarico dei dati sul file con la funzione \end{funcproto} \noindent anche di questa funzione esiste una analoga \func{fflush\_unlocked} -(accessibile definendo \macro{\_BSD\_SOURCE} o \macro{\_SVID\_SOURCE} o +(accessibile definendo una fra \macro{\_BSD\_SOURCE}, \macro{\_SVID\_SOURCE} o \macro{\_GNU\_SOURCE}) che non effettua il blocco dello \textit{stream}. % TODO aggiungere prototipo \func{fflush\_unlocked}?