X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=system.tex;h=aa60c2a187e9655ab62c068b09cda910deaba1a5;hp=691edbde5eac62625b6c8b7996fd8612b08de46c;hb=707eaacf08258c80e480b416856bcba020d0a0a6;hpb=48fd525f70c8c9b06311cf120804d0f9d54e04f2 diff --git a/system.tex b/system.tex index 691edbd..aa60c2a 100644 --- a/system.tex +++ b/system.tex @@ -621,11 +621,78 @@ del kernel, nella directory \file{Documentation/sysctl}. \subsection{La configurazione dei filesystem} \label{sec:sys_file_config} +Come accennato in \secref{sec:file_organization} per poter accedere ai file +occorre prima rendere disponibile al sistema il filesystem su cui essi sono +memorizzati; l'operazione di attivazione del filesystem è chiamata +\textsl{montaggio}, per far questo in Linux\footnote{la funzione è specifica + di Linux e non è portabile} si usa la funzione \func{mount} il cui prototipo +è: +\begin{prototype}{sys/mount.h} +{mount(const char *source, const char *target, const char *filesystemtype, + unsigned long mountflags, const void *data)} + +Monta il filesystem di tipo \param{filesystemtype} contenuto in \param{source} +sulla directory \param{target}. + + \bodydesc{La funzione ritorna 0 in caso di successo e -1 in caso di + fallimento, nel qual caso \var{errno} viene settata a: + \begin{errlist} + \item[\macro{EPERM}] il processo non ha i provilegi di amministratore. + \item[\macro{ENODEV}] \param{filesystemtype} non esiste o non è configurato + nel kernel. + \item[\macro{ENOTBLK}] non si è usato un \textit{block device} per + \param{source} quando era richiesto. + \item[\macro{EBUSY}] \param{source} è già montato, o non può essere + rimontato in read-only perché ci sono ancora file aperti in scrittura, o + \param{target} è ancora in uso. + \item[\macro{EINVAL}] il device \param{source} presenta un + \textit{superblock} non valido, o si è cercato di rimontare un filesystem + non ancora montato, o di montarlo senza che \param{target} sia un + \type{mount point} o di spostarlo quando \param{target} non è un + \type{mount point} o è \file{/}. + \item[\macro{EACCES}] non si ha il permesso di accesso su uno dei componenti + del pathname, o si è cercato di montare un filesystem disponibile in sola + lettura senza averlo specificato o il device \param{source} è su un + filesystem montato con l'opzione \macro{MS\_NODEV}. + \item[\macro{ENXIO}] il \textit{major number} del device \param{source} è + sbagliato. + \item[\macro{EMFILE}] la tabella dei device \textit{dummy} è piena. + \end{errlist} + ed inoltre \macro{ENOTDIR}, \macro{EFAULT}, \macro{ENOMEM}, + \macro{ENAMETOOLONG}, \macro{ENOENT} o \macro{ELOOP}.} +\end{prototype} +La funzione monta sulla directory \param{target} il filesystem contenuto in +\param{source}, di norma questo è un file di dispositivo, ma può anche essere +un file normale che contiene un filesystem, (che può essere montato \textit{in + loopback}). -\subsection{La funzione \func{statfs}} -\label{sec:sys_file_stafs} + +Due funzioni, utili per ottenere in maniera diretta informazioni riguardo al +filesystem su cui si trova un certo file, sono \func{statfs} e \func{fstatfs}, +i cui prototipi sono: +\begin{functions} + \headdecl{sys/vfs.h} \funcdecl{int statfs(const char *path, struct statfs + *buf)} \funcdecl{int fstatfs(int fd, struct statfs *buf)} Restituisce in + \param{buf} le informazioni relative al filesystem su cui è posto il file + specificato. + +\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di + errore, nel qual caso \var{errno} viene settato ai valori: + \begin{errlist} + \item[\macro{ENOSYS}] il filesystem su cui si trova il file specificato non + supporta la funzione. + \end{errlist} + e \macro{EFAULT} ed \macro{EIO} per entrambe, \macro{EBADF} per + \func{fstatfs}, \macro{ENOTDIR}, \macro{ENAMETOOLONG}, \macro{ENOENT}, + \macro{EACCES}, \macro{ELOOP} per \func{statfs}.} +\end{functions} + + + +\subsection{La gestione di utenti e gruppi} +\label{sec:sys_user_group} @@ -912,9 +979,6 @@ o la macro (\texttt{\small 15--17}) associate a quel codice. \end{figure} -\section{La gestione di utenti e gruppi} -\label{sec:sys_user_group} - %%% Local Variables: %%% mode: latex