]> gapil.gnulinux.it Git - gapil.git/commitdiff
Note di copyright 2025 master
authorSimone Piccardi <piccardi@truelite.it>
Wed, 5 Feb 2025 11:00:08 +0000 (12:00 +0100)
committerSimone Piccardi <piccardi@truelite.it>
Wed, 5 Feb 2025 11:00:08 +0000 (12:00 +0100)
29 files changed:
build.tex
domandemanpages.txt
errors.tex
fileadv.tex
filedir.tex
fileio.tex
gapil.tex
intro.tex
ipc.tex
macro.tex
netlayer.tex
network.tex
othersock.tex
preambolo.tex
pref.tex
procadv.tex
process.tex
prochand.tex
ringraziamenti.tex
session.tex
signal.tex
sockadv.tex
sockctrl.tex
socket.tex
sources/sigwait.c [new file with mode: 0644]
system.tex
tcpsock.tex
thread.tex
trasplayer.tex

index cec0b2db85a160121f3e283e6dceb636fba256d1..f695fdf5c2c56d04b20361f9c0885765c8072d5c 100644 (file)
--- a/build.tex
+++ b/build.tex
@@ -1,6 +1,6 @@
 %% build.tex
 %%
-%% Copyright (C) 1999-2019 Simone Piccardi.  Permission is granted to copy,
+%% Copyright (C) 1999-2025 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",
index a06a041f982ff8732232914433c664a92fb2167b..1d2bba85abe679380694c98592b5cff8aa833baf 100644 (file)
@@ -6,3 +6,9 @@ Con readv/writev che fine ha fatto EOPNOTSUPP?
 tee ed il supporto per i socket ?
 
 openat e il supposto problema della race condition.
+
+
+Con sigwait si dice che viene restituito un valore positivo in caso di errore
+ma si elenca soltanto EINVAL, ma se si usa un puntatore non valido, che
+succede? Prima era elencato anche EFAULT, ora no. Dal codice sembrerebbe 
+
index b8b6a8fe264c779d153d257b6eca1367ea817d00..7fcbaf8fc79bbd7f70a74bfd77c6a64639e4f8eb 100644 (file)
@@ -1,6 +1,6 @@
 %% errors.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
index 948f7210a2f2eca265fbf11f21a32749b384ab6a..40316158b766f7b3416c189228cbdb69017741a2 100644 (file)
@@ -1,6 +1,6 @@
 %% fileadv.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
@@ -925,6 +925,7 @@ attuale delle cose è sconsigliabile fare affidamento sul \textit{mandatory
 
 % TODO il supporto è stato reso opzionale nel 4.5, verrà eliminato nel futuro
 % (vedi http://lwn.net/Articles/667210/)
+% è stato eliminato nel 5.15
 
 \itindend{file~locking}
 
@@ -3498,6 +3499,10 @@ raggruppati in un solo evento.
 % http://lwn.net/Articles/343346/ (incluso nel 2.6.36)
 % fanotify_mark() ha FAN_MARK_FILESYSTEM dal 4.20
 % fanotify() ha FAN_OPEN_EXEC dal 4.21/5.0
+% fanotify() ha FAN_REPORT_PIDFD dal 5.14
+% fanotify() ha FAN_FS_ERROR dal 5.16, vedi
+% https://docs.kernel.org/admin-guide/filesystem-monitoring.html 
+% fanotify() ha FAN_RENAME dal 5.17, vedi https://kernelnewbies.org/Linux_5.17
 
 
 \subsection{L'interfaccia POSIX per l'I/O asincrono}
@@ -4733,7 +4738,9 @@ caching dei dati.
 % https://lwn.net/Articles/733256/).
 % TODO aggiunte MADV_COLD e MADV_PAGEOUT dal kernel 5.4, vedi
 % https://git.kernel.org/linus/9c276cc65a58 e
-% https://git.kernel.org/linus/1a4e58cce84e 
+% https://git.kernel.org/linus/1a4e58cce84e
+% TODO: aggiunte MADV_POPULATE_READ e MADV_POPULATE_WRITE (vedi
+% https://lwn.net/Articles/861695/) 
 
 \footnotetext{a partire dal kernel 2.6.32 è stato introdotto un meccanismo che
   identifica pagine di memoria identiche e le accorpa in una unica pagina
@@ -5862,6 +5869,12 @@ da fare
 
 % TODO: trattare i file seal, vedi fcntl / F_ADD_SEAL e memfd_create
 
+% TODO: con il kernel 5.14 è stata introdotta la syscall memfd_secret, vedi
+% https://lwn.net/Articles/835342/ https://lwn.net/Articles/812325/
+% https://lwn.net/Articles/865256/
+% https://lwn.net/ml/linux-mm/20210729082900.1581359-1-rppt@kernel.org/ e
+% https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1507f51255c9 
+
 % TODO trattare qui ioctl_ficlonerange ?
 
 % TODO trattare qui close_range, vedi https://lwn.net/Articles/789023/
index 65772744bf8b02534423526b817c07f620510f3e..5b48a3497c295c6497b64d30d3eae92bfea8680b 100644 (file)
@@ -1,6 +1,6 @@
 %% filedir.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
@@ -1182,6 +1182,9 @@ utilizzati solo in fase di montaggio:
 %  * http://lwn.net/Articles/159077/ e
 %  * Documentation/filesystems/sharedsubtree.txt
 
+% TODO: (bassa priorità) trattare mount_setattr, vedi
+% https://lwn.net/Articles/896255/ 
+
 % TODO: (bassa priorità) non documentati ma presenti in sys/mount.h:
 %       * MS_POSIXACL
 %       * MS_KERNMOUNT
@@ -1406,6 +1409,9 @@ trattazione, di queste funzioni, rimandando al manuale della \acr{glibc}
 % filesystem, vedi https://lwn.net/Articles/759499/ e
 % https://git.kernel.org/linus/f1b5618e013a 
 
+% TODO con il 6.8 sono state introdotte le syscall listmount() and statmount()
+% system calls, vedi https://lwn.net/Articles/950569/ e
+% https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8c9440fea774 
 
 \section{La gestione di file e directory}
 \label{sec:file_dir}
@@ -5337,6 +5343,9 @@ l'argomento \param{name} secondo le stesse modalità già illustrate in
 precedenza per le altre funzioni relative alla gestione degli attributi
 estesi.
 
+% TODO: aggiungere le varianti setxattrat(), getxattrat(), listxattrat(), and
+% removexattrat() aggiunte con il kernel 6.13 (qui o nella at functions)
+
 \itindend{Extended~Attributes}
 
 
@@ -6262,6 +6271,8 @@ gestione delle quote è \funcd{quotactl}, ed il suo prototipo è:
 \end{funcproto}
 
 % TODO rivedere gli errori
+% TODO aggiungere quotactl_fd introdotta con il kernel 5.14, vedi
+% https://lwn.net/Articles/859679/ 
 
 La funzione richiede che il filesystem sul quale si vuole operare, che deve
 essere specificato con il nome del relativo file di dispositivo nell'argomento
index f6305620b9426ac36594e44fc7ac552760a7def3..5ab716c19ee2eafd2f92e79973690b08e40b304e 100644 (file)
@@ -1,6 +1,6 @@
-s%% fileio.tex (merge fileunix.tex - filestd.tex)
+%% fileio.tex (merge fileunix.tex - filestd.tex)
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
@@ -557,6 +557,7 @@ escludere la possibilità di far esistere il file anche in un secondo tempo.
 
 % NOTE: per O_TMPFILE vedi: http://kernelnewbies.org/Linux_3.11
 % https://lwn.net/Articles/558598/ http://lwn.net/Articles/619146/
+% https://lwn.net/Articles/896153/
 
 
 \begin{table}[!htb]
@@ -1959,6 +1960,9 @@ aggiuntivo sono \textit{system call}, ad esempio \func{faccessat} e
 aderenza allo standard POSIX.1-2008, dato che la \textit{system call}
 sottostante non prevede l'argomento \param{flags}.
 
+% TODO: nel kernel 6.6 è stata introdotta fchmodat2 che risolve il problema
+% appena illustrato
+
 % TODO: aggiornare per via di faccessat2 aggiunta con il kernel 5.8
 
 In tab.~\ref{tab:at-functions_constant_values} si sono elencati i valori
@@ -2914,6 +2918,9 @@ il nome indicato nel precedente prototipo), è riportata di seguito:
   o \errcode{EMFILE} se il processo ha già raggiunto il massimo numero di
   descrittori consentito.
 
+  % TODO: trattare F_DUPFD_QUERY aggiunta con il kernel 6.10
+  % TODO: trattare F_CREATE_QUERY aggiunta con il kernel 6.12
+  
 \item[\constd{F\_DUPFD\_CLOEXEC}] ha lo stesso effetto di \const{F\_DUPFD}, ma
   in più attiva il flag di \textit{close-on-exec} sul file descriptor
   duplicato, in modo da evitare una successiva chiamata con
index 3b1d0c97103962daae0711287dc9eb18f1b4af54..bb820034e1c4d612c65b1b3ba0b15e4fa4764d71 100644 (file)
--- a/gapil.tex
+++ b/gapil.tex
@@ -1,6 +1,6 @@
 %% gapil.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.3 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -136,7 +136,7 @@ hyperfootnotes=false]{hyperref}
 
 \begin{quote}
   
-  Copyright \copyright\ 2000-2021 Simone Piccardi.  Permission is granted to
+  Copyright \copyright\ 2000-2025 Simone Piccardi.  Permission is granted to
   copy, distribute and/or modify this document under the terms of the GNU Free
   Documentation License, Version 1.3 or any later version published by the
   Free Software Foundation; with the Invariant Sections being ``Un preambolo''
index 4059f5ea05c8fadaad46b3b9dc00b00a83e001ef..1a45c6670df942464f83fadda2bc5f931ff859d6 100644 (file)
--- a/intro.tex
+++ b/intro.tex
@@ -1,6 +1,6 @@
 %% intro.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
diff --git a/ipc.tex b/ipc.tex
index 7306d8efd3ac62937c3abebb344433c4018d4d1c..482b52cb35b89dc768697afea01ab1b61418750d 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -1,6 +1,6 @@
 %% ipc.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
index 3cd6b92c643399c7d855f5fe027b06e0b58ecee8..c46c7688f2a5c666567499c6d1ebbde7149422be 100644 (file)
--- a/macro.tex
+++ b/macro.tex
@@ -1,6 +1,6 @@
 %% macro.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
index 4ed5260559a9e947dcdc98a597731c35566238cc..c1b4f922ff343b14e5e765041b0ff1126dcaa0ce 100644 (file)
@@ -1,6 +1,6 @@
 %% netlayer.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
index dde8230c6171e0e27670efe095c373c0007cfb11..2953b0470a7d1509fd3982161944dea3243a6fa3 100644 (file)
@@ -1,6 +1,6 @@
 %% network.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
index 325fb0d02745c2c674e6c05fbb35ca8d840c2ced..246837ab94998919fa60049f187bb172ac0f8a4f 100644 (file)
@@ -1,6 +1,6 @@
 %% othersock.tex
 %%
-%% Copyright (C) 2004-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2004-2025 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",
@@ -801,6 +801,8 @@ stack dei protocolli.
 \subsection{I socket \textit{netlink}}
 \label{sec:socket_netlink}
 
+Vedi \url{https://docs.kernel.org/next/userspace-api/netlink/index.html} 
+
 
 \subsection{I \textit{packet socket}}
 \label{sec:packet_socket}
index 522eb139567002e742158b37fc13f42d96a48c10..2ff74c6241a5a8a30e00fa115e6940eb03c46b75 100644 (file)
@@ -1,6 +1,6 @@
 %% preambolo.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
index 4659e921032acbbe55cc55a15e8e3084534d65af..a93f9718e373e968163457d1b3b79619d5678b98 100644 (file)
--- a/pref.tex
+++ b/pref.tex
@@ -1,6 +1,6 @@
 %% pref.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
index a5ea67f92461d11fe848000979129e21aa59b30e..7a03975939823e89c334aa28fd8118040fde745a 100644 (file)
@@ -1360,6 +1360,10 @@ essere fornito in una forma di codice interpretabile fornito attraverso un
 socket o una \textit{pipe}, creati prima di lanciare il processo che eseguirà
 il codice non fidato. 
 
+% TODO: a partire dal kernel 6.6 è stato introdotto
+% SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP that indicates that events from the
+% watched process will be handled synchronously; that allows the kernel to
+% schedule the two processes more efficiently (da LWN)
 
 % TODO a partire dal kernel 3.5 è stato introdotto la possibilità di usare un
 % terzo argomento se il secondo è SECCOMP_MODE_FILTER, vedi
@@ -1488,12 +1492,14 @@ alcune opzioni di controllo attivabili via \func{sysctl} o il filesystem
 % TODO: trattare pure protected_regular e protected_fifos introdotti con il
 % 4.19 (vedi https://lwn.net/Articles/763106/)
 
-
-
 % TODO: trattare keyctl (man 2 keyctl)
 % (fare sezione dedicata ????)
 % TODO documentare la Crypto API del kernel
 
+% TODO: trattere le syscall di gestione dei Linux Security Modules
+% lsm_list_modules(), lsm_get_self_attr() e lsm_set_self_attr(), aggiunte con
+% il 6.8, vedi https://lwn.net/Articles/919059/ e
+% https://docs.kernel.org/next/userspace-api/lsm.html 
 
 % TODO trattare le funzioni di protezione della memoria pkey_alloc, pkey_free,
 % pkey_mprotect, introdotte con il kernel 4.8, vedi
@@ -1565,6 +1571,10 @@ all'ordinario valore nullo (dato per implicito).
 %TODO: trattare PR_MPX_*_MANAGEMENT, dal 3.19, vedi
 %      https://lwn.net/Articles/582712/ 
 %TODO: trattare PR_*NO_NEW_PRIVS, dal 3.5
+%TODO: trattare il core scheduling dal 5.14, vedi
+%https://lwn.net/Articles/780703/ e https://lwn.net/Articles/861251/
+%TODO: trattare PR_SPEC_L1D_FLUSH vedi https://git.kernel.org/linus/b7fe54f6c2d4
+
 
 \begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
 \item[\constd{PR\_CAPBSET\_READ}] Controlla la disponibilità di una delle
@@ -1902,6 +1912,13 @@ Introdotta a partire dal kernel 2.4.21, solo su PowerPC.
 % TODO documentare PR_SET_SYSCALL_USER_DISPATCH in 5.11, vedi
 % https://lwn.net/Articles/826313/
 
+% TODO documentare PR_SET_MDWE in 6.3, vedi
+% https://git.kernel.org/linus/b507808ebce2
+
+% TODO documentare PR_SET_MEMORY_MERGE in 6.4, vedi
+% https://lwn.net/Articles/953141/
+
+
 \label{sec:prctl_operation}
 \end{basedescript}
 
index 57b88739c816f571e3041dc9d0147fbce0f5b0d1..016fd3be8d911fa9c8836f591d9755c74f8f0e13 100644 (file)
@@ -1,6 +1,6 @@
 %% process.tex
 %%
-%% Copyright (C) 2000-2019 by Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 by 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",
index 3ee2344c9195736428b2f5535815f6d353e8d751..58da3559eaf22f5df4f2434dba671b203489d441 100644 (file)
@@ -1,6 +1,6 @@
 %% prochand.tex
 %%
-%% Copyright (C) 2000-2019 by Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 by 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",
index 6d4e77e1b06faef75afb2016de2a1ecfcf3acecd..26e93c2f1d4fa1af45411afe52317942bf24bfd2 100644 (file)
@@ -1,6 +1,6 @@
 %% ringraziamenti.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
index 639cf0dd90d7892a921f4737fcd7f647ef20d3d3..54bd915118c68e305c8d7ddb5bffe9a7690590af 100644 (file)
@@ -1,6 +1,6 @@
 %% session.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
@@ -44,9 +44,9 @@ Originariamente si trattava di dispositivi specifici (i terminali seriali, se
 non addirittura le telescriventi). Oggi questa interfaccia viene in genere
 emulata o tramite programmi o con le cosiddette console virtuali associate a
 monitor e tastiera, ma esiste sempre la possibilità di associarla direttamente
-ad alcuni dispositivi, come eventuali linee seriali, ed in certi casi, come
-buona parte dei dispositivi embedded su cui gira Linux (come router, access
-point, ecc.) questa resta anche l'unica opzione per una \textit{console} di
+a dispositivi specifici come le linee seriali, che in certi casi, come avviene
+per buona parte dei dispositivi embedded su cui gira Linux, come router,
+access point, ecc. sono l'unica opzione per una avere una \textit{console} di
 sistema.
 
 
@@ -64,7 +64,7 @@ molti terminali in contemporanea da una singola postazione di lavoro, ma il
 sistema è nato prima dell'esistenza di tutto ciò.
 
 Il \textit{job control} è una caratteristica opzionale, introdotta in BSD
-negli anni '80, e successivamente standardizzata da POSIX.1. La sua
+negli anni '80, e successivamente standardizzata da POSIX.1; la sua
 disponibilità nel sistema è verificabile attraverso il controllo della macro
 \macro{\_POSIX\_JOB\_CONTROL}. In generale il \textit{job control} richiede il
 supporto sia da parte della shell (quasi tutte ormai lo hanno), che da parte
@@ -560,15 +560,15 @@ terminati.
 \label{sec:sess_login}
 
 L'organizzazione del sistema del job control è strettamente connessa alle
-modalità con cui un utente accede al sistema per dare comandi, collegandosi ad
+modalità con cui un utente accede al sistema per dare comandi collegandosi ad
 esso con un terminale, che sia questo realmente tale, come un VT100 collegato
-ad una seriale o virtuale, come quelli associati a schermo e tastiera o ad una
-connessione di rete. Dato che i concetti base sono gli stessi, e dato che alla
-fine le differenze sono nel dispositivo cui il kernel associa i file standard
-(vedi tab.~\ref{tab:file_std_files}) per l'I/O, tratteremo solo il caso
-classico del terminale, in generale nel caso di login via rete o di terminali
-lanciati dall'interfaccia grafica cambia anche il processo da cui ha origine
-l'esecuzione della shell.
+ad una seriale, o virtuale, come quelli associati a schermo e tastiera o ad
+una connessione di rete. Dato che i concetti base sono gli stessi, e dato che
+alla fine le differenze sono nel dispositivo cui il kernel associa i file
+standard (vedi tab.~\ref{tab:file_std_files}) per l'I/O, tratteremo solo il
+caso classico del terminale, in generale nel caso di login via rete o di
+terminali lanciati dall'interfaccia grafica cambia anche il processo da cui ha
+origine l'esecuzione della shell.
 
 Abbiamo già brevemente illustrato in sez.~\ref{sec:intro_kern_and_sys} le
 modalità con cui il sistema si avvia, e di come, a partire da \cmd{init},
@@ -589,7 +589,7 @@ definito nello stesso file.
 
 Tralasciando la descrizione del sistema dei \textit{run level}, (per il quale
 si rimanda alla lettura delle pagine di manuale di \cmd{init} e di
-\file{inittab} o alla trattazione in sez.~5.3 di \cite{AGL}) quello che
+\file{inittab} o alla trattazione in sez.~5.4.5 di \cite{AGL}) quello che
 comunque viene sempre fatto è di eseguire almeno una istanza di un programma
 che permetta l'accesso ad un terminale. Uno schema di massima della procedura
 è riportato in fig.~\ref{fig:sess_term_login}.
@@ -695,12 +695,12 @@ Questi programmi, che devono essere eseguiti in modalità non interattiva e
 senza nessun intervento dell'utente, sono normalmente chiamati
 \textsl{demoni}, (o \textit{daemons}), nome ispirato dagli omonimi spiritelli
 della mitologia greca che svolgevano compiti che gli dei trovavano noiosi, di
-cui parla anche Socrate (che sosteneva di averne uno al suo servizio).
+cui parla anche Socrate, che sosteneva di averne uno al suo servizio.
 
 %TODO ricontrollare, i miei ricordi di filosofia sono piuttosto datati.
 
 Se però si lancia un programma demone dalla riga di comando in un sistema che
-supporta, come Linux, il \textit{job control} esso verrà comunque associato ad
+supporta il \textit{job control} come Linux, esso verrà comunque associato ad
 un terminale di controllo e mantenuto all'interno di una sessione, e anche se
 può essere mandato in background e non eseguire più nessun I/O su terminale,
 si avranno comunque tutte le conseguenze che abbiamo trattato in
@@ -823,7 +823,7 @@ differenti meccanismi come:
 le modalità con cui queste azioni vengono realizzate dipendono ovviamente dal
 demone che si usa, per la gestione del quale si rimanda ad un testo di
 amministrazione di sistema.\footnote{l'argomento è ad esempio coperto dal
-  capitolo 3.2.3 si \cite{AGL}.}
+  capitolo 3.2.3 di \cite{AGL}.}
 
 La \acr{glibc} definisce una serie di funzioni standard con cui un processo
 può accedere in maniera generica al servizio di \textit{syslog}, che però
@@ -1270,9 +1270,9 @@ al di fuori di questo.
 \label{sec:sess_terminal_io}
 
 Benché come ogni altro dispositivo i terminali siano accessibili come file,
-essi hanno assunto storicamente, essendo stati a lungo l'unico modo di
-accedere al sistema, una loro rilevanza specifica, che abbiamo già avuto modo
-di incontrare nella precedente sezione.
+essendo stati a lungo l'unico modo di accedere al sistema essi hanno assunto
+storicamente una loro rilevanza specifica, che abbiamo già avuto modo di
+incontrare nella precedente sezione.
 
 Esamineremo qui le peculiarità dell'I/O eseguito sui terminali, che per la
 loro particolare natura presenta delle differenze rispetto ai normali file su
@@ -1352,8 +1352,8 @@ ricevuti impiegandoli opportunamente come comandi o come dati.
 Per capire le caratteristiche dell'I/O sui terminali occorre esaminare le
 modalità con cui esso viene effettuato. L'accesso, come per tutti i
 dispositivi, viene gestito dal kernel, ma per tutti i terminali viene
-utilizzata una architettura generica che si è schematizzata in
-fig.~\ref{fig:term_struct}.  
+utilizzata una architettura generica che si è schematizzata in maniera
+semplificata in fig.~\ref{fig:term_struct}.
 
 Ad ogni terminale sono sempre associate due code
 per gestire l'input e l'output, che ne implementano una bufferizzazione
@@ -1406,8 +1406,9 @@ descriptor che corrispondono ad un terminale, in caso contrario lo standard
 richiede che venga restituito un errore di \errcode{ENOTTY}.
 
 Per evitare l'errore, ed anche semplicemente per verificare se un file
-descriptor corrisponde ad un terminale, è disponibile la funzione
-\funcd{isatty}, il cui prototipo è:
+descriptor corrisponde ad un terminale (cosa che viene fatta da alcuni
+programmi quando richiedono l'immissione di una password), è disponibile la
+funzione \funcd{isatty}, il cui prototipo è:
 
 \begin{funcproto}{
 \fhead{unistd.h}
@@ -1419,13 +1420,14 @@ descriptor corrisponde ad un terminale, è disponibile la funzione
   altrimenti, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
   \item[\errcode{EBADF}] \param{fd} non è un file descriptor valido.
-  \item[\errcode{EINVAL}] \param{fd} non è associato a un terminale (non
-    ottempera a POSIX.1-2001 che richiederebbe \errcode{ENOTTY}).
+  \item[\errcode{ENOTTY}] \param{fd} non è associato a un terminale (alcune
+    vecchie versioni del kernel restituiscono \errcode{EINVAL} che non
+    ottempera a POSIX.1-2001).
   \end{errlist}
 }
 \end{funcproto}
 
-Un'altra funzione per avere informazioni su un terminale è \funcd{ttyname},
+Una seconda funzione per avere informazioni su un terminale è \funcd{ttyname},
 che permette di ottenere il nome del file di dispositivo del terminale
 associato ad un file descriptor; il suo prototipo è:
 
@@ -1508,14 +1510,14 @@ essere in grado di aprire il terminale.
 I vari attributi associati ad un terminale vengono mantenuti per ciascuno di
 essi in una struttura \struct{termios} che viene usata dalle varie funzioni
 dell'interfaccia. In fig.~\ref{fig:term_termios} si sono riportati tutti i
-campi della definizione di questa struttura usata in Linux; di questi solo i
-primi cinque sono previsti dallo standard POSIX.1, ma le varie implementazioni
-ne aggiungono degli altri per mantenere ulteriori informazioni.\footnote{la
-  definizione della struttura si trova in \file{bits/termios.h}, da non
+campi della definizione di questa struttura usata in Linux;\footnote{la
+  definizione della struttura si trova in \file{bits/termios-struct.h}, da non
   includere mai direttamente; Linux, seguendo l'esempio di BSD, aggiunge i due
   campi \var{c\_ispeed} e \var{c\_ospeed} per mantenere le velocità delle
   linee seriali, ed un campo ulteriore, \var{c\_line} per indicare la
-  disciplina di linea.}
+  disciplina di linea.} di questi solo i primi quattro flag ed il successivo
+\texttt{c\_cc} sono previsti dallo standard POSIX.1, ma le varie
+implementazioni ne aggiungono degli altri per mantenere ulteriori informazioni.
 
 \begin{figure}[!htb] 
   \footnotesize \centering
@@ -1621,26 +1623,28 @@ modificare i bit su cui non si interviene.
 \end{table}
 
 Il primo flag, mantenuto nel campo \var{c\_iflag}, è detto \textsl{flag di
-  input} e controlla le modalità di funzionamento dell'input dei caratteri sul
-terminale, come il controllo di parità, il controllo di flusso, la gestione
-dei caratteri speciali; un elenco dei vari bit, del loro significato e delle
-costanti utilizzate per identificarli è riportato in
-tab.~\ref{tab:sess_termios_iflag}.
-
-Si noti come alcuni di questi flag (come quelli per la gestione del flusso)
-fanno riferimento a delle caratteristiche che ormai sono completamente
-obsolete; la maggior parte inoltre è tipica di terminali seriali, e non ha
-alcun effetto su dispositivi diversi come le console virtuali o gli
-pseudo-terminali usati nelle connessioni di rete.
+  input} e controlla le modalità con cui viene gestita l'immissione dei
+caratteri sul terminale, per funzionalità come il controllo di parità, il
+controllo di flusso, la gestione dei caratteri speciali; un elenco dei vari
+bit che compongono il flag, del loro significato e delle costanti utilizzate
+per identificarli è riportato in tab.~\ref{tab:sess_termios_iflag}.
+
+Si noti come alcuni di questi flag (come quelli relativi al controllo di
+gestione del flusso) fanno riferimento a delle caratteristiche dei terminali
+che ormai sono completamente obsolete; la maggior parte inoltre è tipica dei
+terminali seriali, e non ha alcun effetto su dispositivi diversi come le
+console virtuali sullo schermo o gli pseudo-terminali usati nelle connessioni
+di rete.
 
 Il secondo flag, mantenuto nel campo \var{c\_oflag}, è detto \textsl{flag di
-  output} e controlla le modalità di funzionamento dell'output dei caratteri,
-come l'impacchettamento dei caratteri sullo schermo, la traslazione degli a
-capo, la conversione dei caratteri speciali; un elenco dei vari bit, del loro
-significato e delle costanti utilizzate per identificarli è riportato in
-tab.~\ref{tab:sess_termios_oflag}, di questi solo \const{OPOST} era previsto
-da POSIX.1, buona parte degli altri sono stati aggiunti in POSIX.1-2001,
-quelli ancora assenti sono stati indicati esplicitamente.
+  output} e controlla le modalità con cui viene gestito il funzionamento dei
+caratteri scritti sul terminale, come l'impacchettamento dei caratteri sullo
+schermo, la traslazione degli a capo, la conversione dei caratteri speciali.
+Un elenco dei vari bit, del loro significato e delle costanti utilizzate per
+identificarli è stato riportato in tab.~\ref{tab:sess_termios_oflag}, di
+questi soltanto \const{OPOST} era previsto da POSIX.1, buona parte degli altri
+flag sono stati aggiunti in POSIX.1-2001, quelli ancora assenti sono stati
+indicati esplicitamente.
 
 \begin{table}[!htb]
   \footnotesize
@@ -1698,17 +1702,19 @@ quelli ancora assenti sono stati indicati esplicitamente.
 \end{table}
 
 Si noti come alcuni dei valori riportati in tab.~\ref{tab:sess_termios_oflag}
-fanno riferimento a delle maschere di bit; essi infatti vengono utilizzati per
-impostare alcuni valori numerici relativi ai ritardi nell'output di alcuni
-caratteri: una caratteristica originaria dei primi terminali su telescrivente,
-che avevano bisogno di tempistiche diverse per spostare il carrello in
-risposta ai caratteri speciali, e che oggi sono completamente in disuso.
-
-Si tenga presente inoltre che nel caso delle maschere il valore da inserire in
-\var{c\_oflag} deve essere fornito avendo cura di cancellare prima tutti i bit
-della maschera, i valori da immettere infatti (quelli riportati nella
-spiegazione corrispondente) sono numerici e non per bit, per cui possono
-sovrapporsi fra di loro. Occorrerà perciò utilizzare un codice del tipo:
+fanno riferimento non a bit singoli, ma a delle maschere di bit; essi infatti
+vengono utilizzati per impostare alcuni valori numerici relativi ai ritardi da
+applicare alla scrittura sul terminale di alcuni caratteri: si tratta di una
+caratteristica originaria dei primi terminali su telescrivente, che avevano
+bisogno di tempistiche diverse per spostare il carrello in risposta ai
+caratteri speciali, e che oggi sono completamente in disuso.
+
+Si tenga presente inoltre che nel caso si utilizzi una di queste maschere di
+bit il valore da inserire in \var{c\_oflag} deve essere fornito avendo cura di
+cancellare prima tutti i bit della maschera; i valori da immettere infatti
+(quelli riportati nella spiegazione corrispondente) sono numerici e non per
+bit, per cui possono sovrapporsi fra di loro. Occorrerà perciò utilizzare un
+codice del tipo:
 
 \includecodesnip{listati/oflag.c}
 
@@ -1911,8 +1917,8 @@ Oltre ai vari flag per gestire le varie caratteristiche dei terminali,
 impostare i caratteri speciali associati alle varie funzioni di controllo. Il
 numero di questi caratteri speciali è indicato dalla costante \constd{NCCS},
 POSIX ne specifica almeno 11, ma molte implementazioni ne definiscono molti
-altri.\footnote{in Linux il valore della costante è 32, anche se i caratteri
-  effettivamente definiti sono solo 17.}
+altriin Linux il valore della costante è 32, anche se i caratteri
+effettivamente definiti sono solo 17.
 
 \begin{table}[!htb]
   \footnotesize
@@ -2187,7 +2193,8 @@ velocità tipiche delle linee seriali:
 \begin{verbatim}
      B0       B50      B75      B110     B134     B150     B200     
      B300     B600     B1200    B1800    B2400    B4800    B9600    
-     B19200   B38400   B57600   B115200  B230400  B460800
+     B19200   B38400   B57600   B115200  B230400  B460800  B460800
+     B500000  B576000  B921600  B1000000 B1152000 B1500000 B2000000
 \end{verbatim}
 
 Un terminale può utilizzare solo alcune delle velocità possibili, le funzioni
@@ -2489,7 +2496,6 @@ Da fare.
 
 Qui vanno spiegati i terminali virtuali, \file{/dev/pty} e compagnia.
 % vedi man pts
-% vedi 
 
 
 \subsection{Allocazione dei terminali virtuali}
@@ -2503,13 +2509,18 @@ Qui vanno le cose su \func{openpty} e compagnia.
 % vedi http://lwn.net/Articles/688809/,
 % http://man7.org/linux/man-pages/man3/ptsname.3.html
 
+% vedi
+% https://stackoverflow.com/questions/77231881/how-to-turn-a-pty-shell-into-a-remote-shell
+% https://gist.github.com/zmwangx/2bac2af9195cad47069419ccd9ee98d8
+% https://www.uninformativ.de/blog/postings/2018-02-24/0/POSTING-en.html 
+% https://cpp.hotexamples.com/it/examples/-/-/openpty/cpp-openpty-function-examples.html
 
 % TODO materiale sulle seriali
 % vedi http://www.easysw.com/~mike/serial/serial.html
 % TODO materiale generico sul layer TTY
 % vedi http://www.linusakesson.net/programming/tty/index.php
 
-% LocalWords:  kernel multitasking job control BSD POSIX shell sez group
+% LocalWords:  kernel multitasking job control BSD POSIX shell sez group SysV
 % LocalWords:  foreground process bg fg waitpid WUNTRACED pgrp session sched
 % LocalWords:  struct pgid sid pid ps getpgid getpgrp unistd void errno int
 % LocalWords:  ESRCH getsid glibc system call XOPEN SOURCE EPERM setpgrp EACCES
@@ -2547,7 +2558,7 @@ Qui vanno le cose su \func{openpty} e compagnia.
 % LocalWords:  closelog dmesg sysctl klogctl sys ERESTARTSYS ConsoleKit to CoPy
 % LocalWords:  loglevel message libc klog mydmesg CAP ADMIN LXC pipelining UID
 % LocalWords:  TIOCSPGRP GID IUTF UTF LOBLK NONBLOCK CMSPAR MARK VDSUSP VSTATUS
-% LocalWords:  cfsetspeed raw cfmakeraw
+% LocalWords:  cfsetspeed raw cfmakeraw dell'I SVr l'I
 
 %%% Local Variables: 
 %%% mode: latex
index 63a940027b3d5c027e23e0f5d23bbfa596701d1a..ab365cc26525c06a0d98b1b8f55fd8031d8ce23e 100644 (file)
@@ -1,6 +1,6 @@
 %% signal.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
@@ -2594,12 +2594,16 @@ prototipo è:
 {La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
   caso \var{errno} assumerà uno dei valori: 
   \begin{errlist}
-  \item[\errcode{EFAULT}] si sono specificati indirizzi non validi.
-  \item[\errcode{EINVAL}] si è specificato un numero di segnale invalido.
+  \item[\errcode{EFAULT}] l'indirizzo di \param{mask} non è valido.
+  \item[\errcode{EINTR}] la funzione è stata interrotta da un segnale.
   \end{errlist}
 }
 \end{funcproto}
 
+La funzione imposta la maschera dei segnali indicata da \param{mask} e pone in
+attesa il processo. Ritorna solo con la ricezione di un segnale, con un errore
+di \errval{EINTR}, a meno che il segnale non termini il processo.
+
 Come esempio dell'uso di queste funzioni proviamo a riscrivere un'altra volta
 l'esempio di implementazione di \code{sleep}. Abbiamo accennato in
 sez.~\ref{sec:sig_sigaction} come con \func{sigaction} sia possibile bloccare
@@ -3017,11 +3021,10 @@ prima di queste è \funcd{sigwait}, il cui prototipo è:
 \fdecl{int sigwait(const sigset\_t *set, int *sig)}
 \fdesc{Attende la ricezione di un segnale.} 
 }
-{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
-  caso \var{errno} assumerà uno dei valori
+{La funzione ritorna $0$ in caso di successo ed un valore positivo in caso di
+  errore con valore secondo la lista seguente
   \begin{errlist}
-  \item[\errcode{EINTR}] la funzione è stata interrotta.
-  \item[\errcode{EINVAL}] si è specificato un valore non valido per
+  \item[\errcode{EINVAL}] \param{set} contiene un numero di segnale non valido 
   \end{errlist}
   ed inoltre \errval{EFAULT} nel suo significato generico.}
 \end{funcproto}
@@ -3095,14 +3098,6 @@ che venga eseguita l'azione predefinita, devono essere mascherati per tutti i
 \textit{thread}, compreso quello dedicato alla gestione, che potrebbe
 riceverlo fra due chiamate successive.
 
-Come esempio elementare dell'uso dei segnali \textit{real-time}, e della
-possibilità di inviare informazioni al gestore degli stessi con
-\func{sigqueue}, si è riportato in fig.~\ref{fig:sig_rtsival_main} il corpo
-principale di un programma elementare che legge dal terminale un valore
-numerico, ed utilizza un segnale \textit{real-time} per inviarlo al gestore
-dello stesso. Si sono trascurati i controlli dei valori di ritorno delle varie
-funzioni per brevità.
-
 \begin{figure}[!htb]
   \footnotesize \centering
   \begin{minipage}[c]{\codesamplewidth}
@@ -3114,11 +3109,19 @@ funzioni per brevità.
   \label{fig:sig_rtsival_main}
 \end{figure}
 
+Come esempio elementare dell'uso dei segnali \textit{real-time}, e della
+possibilità di inviare informazioni al gestore degli stessi con
+\func{sigqueue}, si è riportato in fig.~\ref{fig:sig_rtsival_main} il corpo
+principale di un programma elementare che legge dal terminale un valore
+numerico, ed utilizza un segnale \textit{real-time} per inviarlo al gestore
+dello stesso. Nel codice sono stati trascurati i controlli dei valori di
+ritorno delle varie funzioni per mantenere la brevità dell'esempio.
+
 Dopo aver definito (\texttt{\small 5}) una variabile \var{value} di tipo
-\type{sigval\_t} per inviare i dati, ed aver opportunamente scelto
+\type{sigval\_t} per poter inviare i dati, e dopo aver opportunamente scelto
 (\texttt{\small 6}) per \var{signo} un segnale \textit{real-time}, la parte
 iniziale del programma (\texttt{\small 8--11}) installa il relativo gestore
-(la cui definizione è riportata in fig.~\ref{fig:sig_rtsival_handl}), dopo di
+(la cui definizione è riportata in fig.~\ref{fig:sig_rtsival_handl}).  Dopo di
 che il programma si pone in un ciclo infinito (\texttt{\small 14--27}) in cui
 prima (\texttt{\small 15--20}) legge in buffer dallo \textit{standard input}
 una stringa immessa dall'utente, terminandola opportunamente (\texttt{\small
@@ -3128,6 +3131,10 @@ conversione ha successo e \texttt{value.sival\_int} è positivo) invia a se
 stesso (\texttt{\small 23}) il segnale \textit{real-time}, altrimenti stampa
 un avviso (\texttt{\small 24}).
 
+Alla ricezione del segnale il gestore si limita a stampare alcune delle
+informazioni ricevute nella struttura \struct{sigval\_t}, ed in particolare
+(\texttt{\small 5}) stampa tramite il valore del campo \var{si\_value} il
+numero che gli è stato inviato da \func{sigqueue}.
 
 \begin{figure}[!htb]
   \footnotesize \centering
@@ -3135,14 +3142,12 @@ un avviso (\texttt{\small 24}).
     \includecodesample{listati/rtsigvalsend_handl.c}
   \end{minipage} 
   \normalsize 
-  \caption{Codice del gestore.}
+  \caption{Codice del gestore usato dal programma di
+    fig.~\ref{fig:sig_rtsival_main}.} 
   \label{fig:sig_rtsival_handl}
 \end{figure}
 
 
-
-
-
 \subsection{La gestione avanzata delle temporizzazioni}
 \label{sec:sig_timer_adv}
 
@@ -3191,20 +3196,6 @@ alta definizione però erano già presenti, essendo stata introdotte insieme ad
 altre funzioni per il supporto delle estensioni \textit{real-time} con il
 rilascio del kernel 2.6, ma la risoluzione effettiva era nominale.
 
-A tutte le implementazioni che si rifanno a queste estensioni è richiesto di
-disporre di una versione \textit{real-time} almeno per l'orologio generale di
-sistema, quello che mantiene il \textit{calendar time} (vedi
-sez.~\ref{sec:sys_time_base}), che in questa forma deve indicare il numero di
-secondi e nanosecondi passati a partire dal primo gennaio 1970 (\textit{The
-  Epoch}). Si ricordi infatti che l'orologio ordinario usato dal
-\textit{calendar time} riporta solo un numero di secondi, e che la risoluzione
-effettiva normalmente non raggiunge il nanosecondo (a meno di hardware
-specializzato).  Oltre all'orologio generale di sistema possono essere
-presenti altri tipi di orologi \textit{real-time}, ciascuno dei quali viene
-identificato da un opportuno valore di una variabile di tipo
-\type{clockid\_t}; un elenco di quelli disponibili su Linux è riportato in
-tab.~\ref{tab:sig_timer_clockid_types}.
-
 \begin{table}[htb]
   \footnotesize
   \centering
@@ -3262,6 +3253,19 @@ tab.~\ref{tab:sig_timer_clockid_types}.
   \label{tab:sig_timer_clockid_types}
 \end{table}
 
+A tutte le implementazioni che si rifanno a queste estensioni è richiesto di
+disporre di una versione \textit{real-time} almeno per l'orologio generale di
+sistema, quello che mantiene il \textit{calendar time} (vedi
+sez.~\ref{sec:sys_time_base}), che in questa forma deve indicare il numero di
+secondi e nanosecondi passati a partire dal primo gennaio 1970 (\textit{The
+  Epoch}). Si ricordi infatti che l'orologio ordinario usato dal
+\textit{calendar time} riporta solo un numero di secondi, e che la risoluzione
+effettiva normalmente non raggiunge il nanosecondo (a meno di hardware
+specializzato).  Oltre all'orologio generale di sistema possono essere
+presenti altri tipi di orologi \textit{real-time}, ciascuno dei quali viene
+identificato da un opportuno valore di una variabile di tipo
+\type{clockid\_t}; un elenco di quelli disponibili su Linux è riportato in
+tab.~\ref{tab:sig_timer_clockid_types}.
 
 % TODO: dal 4.17 CLOCK_MONOTONIC e CLOCK_BOOTTIME sono identici vedi
 % https://lwn.net/Articles/751651/ e
@@ -3331,17 +3335,17 @@ stata inizializzata con il valore che si vuole impostare sull'orologio, mentre
 per \func{clock\_gettime} verrà restituito al suo interno il valore corrente
 dello stesso.
 
-Si tenga presente inoltre che per eseguire un cambiamento sull'orologio
-generale di sistema \const{CLOCK\_REALTIME} occorrono i privilegi
-amministrativi;\footnote{ed in particolare la \textit{capability}
-  \const{CAP\_SYS\_TIME}.} inoltre ogni cambiamento ad esso apportato non avrà
-nessun effetto sulle temporizzazioni effettuate in forma relativa, come quelle
-impostate sulle quantità di \textit{process time} o per un intervallo di tempo
-da trascorrere, ma solo su quelle che hanno richiesto una temporizzazione ad
-un istante preciso (in termini di \textit{calendar time}). Si tenga inoltre
-presente che nel caso di Linux \const{CLOCK\_REALTIME} è l'unico orologio per
-cui si può effettuare una modifica, infatti nonostante lo standard preveda la
-possibilità di modifiche anche per \const{CLOCK\_PROCESS\_CPUTIME\_ID} e
+Per eseguire un cambiamento sull'orologio generale di sistema
+\const{CLOCK\_REALTIME} occorrono i privilegi amministrativi;\footnote{ed in
+  particolare la \textit{capability} \const{CAP\_SYS\_TIME}.} e che ogni
+cambiamento ad esso apportato non avrà nessun effetto sulle temporizzazioni
+effettuate in forma relativa, come quelle impostate sulle quantità di
+\textit{process time} o per un intervallo di tempo da trascorrere, ma solo su
+quelle che hanno richiesto una temporizzazione ad un istante preciso (in
+termini di \textit{calendar time}). Si tenga inoltre presente che nel caso di
+Linux \const{CLOCK\_REALTIME} è l'unico orologio per cui si può effettuare una
+modifica, infatti nonostante lo standard preveda la possibilità di modifiche
+anche per \const{CLOCK\_PROCESS\_CPUTIME\_ID} e
 \const{CLOCK\_THREAD\_CPUTIME\_ID}, il kernel non le consente.
 
 Oltre alle due funzioni precedenti, lo standard POSIX prevede una terza
@@ -3377,16 +3381,15 @@ voglia utilizzare nelle funzioni di impostazione che non corrisponda ad un
 multiplo intero di questa risoluzione, sarà troncato in maniera automatica. 
 
 Gli orologi elencati nella seconda sezione di
-tab.~\ref{tab:sig_timer_clockid_types} sono delle estensioni specifiche di
-Linux, create per rispondere ad alcune esigenze specifiche, come quella di
-tener conto di eventuali periodi di sospensione del sistema, e presenti solo
-nelle versioni più recenti del kernel. In particolare gli ultimi due,
-contraddistinti dal suffisso \texttt{\_ALARM}, hanno un impiego particolare,
-derivato dalle esigenze emerse con Android per l'uso di Linux sui cellulari,
-che consente di creare timer che possono scattare, riattivando il sistema,
-anche quando questo è in sospensione. Per il loro utilizzo è prevista la
-necessità di una capacità specifica, \const{CAP\_WAKE\_ALARM} (vedi
-sez.~\ref{sec:proc_capabilities}).
+tab.~\ref{tab:sig_timer_clockid_types} sono estensioni specifiche di Linux
+presenti solo nelle versioni più recenti del kernel, create per rispondere ad
+alcune esigenze specifiche come quella di tener conto di eventuali periodi di
+sospensione del sistema. In particolare gli ultimi due, contraddistinti dal
+suffisso \texttt{\_ALARM}, hanno un impiego particolare derivato dalle
+esigenze emerse con Android per l'uso di Linux sui cellulari, che consente di
+creare timer che possono scattare, riattivando il sistema, anche quando questo
+è in sospensione. Per il loro utilizzo è prevista la necessità di una capacità
+specifica, \const{CAP\_WAKE\_ALARM} (vedi sez.~\ref{sec:proc_capabilities}).
 
 Si tenga presente inoltre che con l'introduzione degli \textit{high resolution
   timer} i due orologi \const{CLOCK\_PROCESS\_CPUTIME\_ID} e
@@ -3888,10 +3891,10 @@ anch'essa introdotta dallo standard POSIX.1, il suo prototipo è:
 La funzione permette di ricavare quali sono i segnali pendenti per il processo
 in corso, cioè i segnali che sono stati inviati dal kernel ma non sono stati
 ancora ricevuti dal processo in quanto bloccati. Non esiste una funzione
-equivalente nella vecchia interfaccia, ma essa è tutto sommato poco utile,
-dato che essa può solo assicurare che un segnale è stato inviato, dato che
-escluderne l'avvenuto invio al momento della chiamata non significa nulla
-rispetto a quanto potrebbe essere in un qualunque momento successivo.
+equivalente nella vecchia interfaccia, ma essa, potendo solo assicurare che un
+segnale è stato inviato, è tutto sommato poco utile dato che escluderne
+l'avvenuto invio al momento della chiamata non significa nulla rispetto a
+quanto potrebbe accadere in un qualunque momento successivo.
 
 Una delle caratteristiche di BSD, disponibile anche in Linux, è la possibilità
 di usare uno \textit{stack} alternativo per i segnali; è cioè possibile fare
index a9e4cd530383947868624e9cf6fcbe7967089df9..a0a0b2950dcd9b18bd700b954aada52895fb4569 100644 (file)
@@ -1,6 +1,6 @@
 %% sockadv.tex
 %%
-%% Copyright (C) 2004-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2004-2025 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",
index 9d5279e6ab62856b34ff617697608b440c23c03e..6a720f230ae8caa8a3ca4ca4414da1612e44d452 100644 (file)
@@ -1,6 +1,6 @@
 %% sockctrl.tex
 %%
-%% Copyright (C) 2004-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2004-2025 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 "Prefazione",
@@ -2669,8 +2669,10 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni:
 \item[\constd{SO\_TYPE}] questa opzione permette di leggere il tipo di socket
   su cui si opera; funziona solo con \func{getsockopt}, ed utilizza per
   \param{optval} un intero in cui verrà restituito il valore numerico che lo
-  identifica (ad esempio \const{SOCK\_STREAM}). 
-
+  identifica (ad esempio \const{SOCK\_STREAM}).
+  
+% TODO verificare IP_LOCAL_PORT_RANGE, aggiunta con il 6.3
+% vedi https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=91d0b78c5177
 
 \end{basedescript}
 
index b01ff3aa67a6f224db9e52899f7397e46daa406e..ea80e85cb12e94d51adaa609b49a113336683c59 100644 (file)
@@ -1,6 +1,6 @@
 %% socket.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
diff --git a/sources/sigwait.c b/sources/sigwait.c
new file mode 100644 (file)
index 0000000..7dcc983
--- /dev/null
@@ -0,0 +1,66 @@
+/* sigwait.c
+ * 
+ * Copyright (C) 2021 Simone Piccardi
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/****************************************************************
+ *
+ * Program sigwait.c: 
+ * Test program for sigwait function
+ *
+ * Author: Simone Piccardi
+ * Nov. 2021
+ *
+ ****************************************************************/
+/* 
+ * Include needed headers
+ */
+#define _GNU_SOURCE
+#include <unistd.h>      /* unix standard library */
+#include <signal.h>      /* signal constants, types and functions */
+#include <errno.h>       /* error definitions and routines */ 
+#include <stdlib.h>      /* C standard library */
+#include <unistd.h>      /* unix standard library */
+#include <stdio.h>      /* standard I/O library */
+#include <string.h>      /* C strings library */
+
+int main(int argc, char *argv[])
+{
+/* 
+ * Variables definition  
+ */
+    int i;
+    pid_t pid = 0;
+    int sig,res;
+    sigset_t set;
+
+    sigemptyset(&set);
+    sigaddset(&set, SIGALRM);
+//    while (1) {
+    res=sigwait(&set, &sig);
+    printf("Sig was %d", sig);
+    if ( res > 0) {
+       printf("Errno was %d", errno);
+       perror("errore");
+       printf("Result was %d", res);
+       printf("Error by res was %s", strerror(res));
+       exit(11);
+    } else {
+       printf("Result was %d", res);
+       printf("Normal exit");
+    }
+//    }
+}
index a761b4dcd31e2431c3ea9f19294975863f1ee21f..ed4e13abb8057a34a7b8070447f0c99cf695de68 100644 (file)
@@ -1,6 +1,6 @@
 %% system.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
index 5951a91107a872bde436424df1adaa7ce8cfe96a..7089f09dba846b4017ae474c9ed9a755932ec0c8 100644 (file)
@@ -1,6 +1,6 @@
 %% tcpsock.tex
 %%
-%% Copyright (C) 2000-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2025 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",
index 62f4dfdf7e9bc388c02835965d9a36b120d6c0d5..a4072200f85d7e083f0599d24f38af154525471d 100644 (file)
@@ -1,6 +1,6 @@
 %% thread.tex
 %%
-%% Copyright (C) 2007-2019 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2007-2025 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",
index 97b0efb7eaf28755b8d2ed3d428fbaed5100b823..239589a9a299191689834ee2eae1c11338f73674 100644 (file)
@@ -1,6 +1,6 @@
 %% tcpprot.tex
 %%
-%% Copyright (C) 2002-2019 Simone Piccardi.  Permission is granted to copy,
+%% Copyright (C) 2002-2025 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",