This commit is contained in:
tth 2021-08-28 17:06:26 +02:00
parent 97f9196db6
commit f5b9cf17dc
5 changed files with 28 additions and 5 deletions

View File

@ -96,6 +96,8 @@ Ce marqueur temporel sera obtenu par l'appel à
pour tenter d'avoir une précision pour tenter d'avoir une précision
significative. significative.
% ----------------------------------------------------------------
\subsection{Émetteur} \subsection{Émetteur}
Son role est simple~: il met le timestamp dans l'enveloppe, et Son role est simple~: il met le timestamp dans l'enveloppe, et
@ -103,6 +105,11 @@ la poste vers l'adresse qu'on lui passe sur la ligne de commande.
\lstinputlisting[language=c]{code/fifo-tx.c} \lstinputlisting[language=c]{code/fifo-tx.c}
Vous remarquerez que nous nettoyons le message avant utilisation
avec un \texttt{memset(3)}, une étape trop souvent oubliée.
% ----------------------------------------------------------------
\subsection{Récepteur} \subsection{Récepteur}
Pour faire simple, le récepteur des messages va passer l'intégralité Pour faire simple, le récepteur des messages va passer l'intégralité
@ -115,7 +122,12 @@ Sauf que ça n'est pas tout à fait ça.
\lstinputlisting[language=c]{code/fifo-rx.c} \lstinputlisting[language=c]{code/fifo-rx.c}
J'avoue ne pas avoir encore bien capté le deuxième argument J'avoue ne pas avoir encore bien capté le deuxième argument
de mkfifo\dots de mkfifo, mais la lecture de
\texttt{fifo(7)} et de \texttt{pipe(7)} peut être
utile pour comprendre\footnote{modulo les références circulaires.}
la chose\dots
% ----------------------------------------------------------------
\subsection{Timestamp} \index{timestamp} \subsection{Timestamp} \index{timestamp}
@ -136,6 +148,8 @@ the system time). If you need a monotonically increasing clock, see
clock\_gettime(2). clock\_gettime(2).
\end{quote} \end{quote}
% ----------------------------------------------------------------
\subsection{Message} \subsection{Message}
Pour des raisons pas si évidente que ça, les messages transmis Pour des raisons pas si évidente que ça, les messages transmis
@ -146,6 +160,8 @@ une structure (page ???) contenant les données à transmettre.
C'est rudimentaire, mais ça fera l'affaire pour claquer un Bonaldi. C'est rudimentaire, mais ça fera l'affaire pour claquer un Bonaldi.
% ----------------------------------------------------------------
% ================================================================ % ================================================================

View File

@ -24,6 +24,8 @@ no-op: no-op.c Makefile
get-signal: get-signal.c Makefile get-signal: get-signal.c Makefile
gcc -Wall $< -o $@ gcc -Wall $< -o $@
fifo: fifo-rx fifo-tx
dtime.o: dtime.c my-fifo.h Makefile dtime.o: dtime.c my-fifo.h Makefile
gcc -Wall -c $< gcc -Wall -c $<

View File

@ -1,6 +1,6 @@
#include <stddef.h> #include <stddef.h>
#include <sys/time.h> #include <sys/time.h>
#include "my-fifo.h"
double dtime(void) double dtime(void)
{ {
struct timeval tv; struct timeval tv;

View File

@ -13,9 +13,12 @@ int fifo;
Message message; Message message;
double localTS; double localTS;
if (argc!=2) exit(1); if (argc!=2) {
fifo = mkfifo(argv[1], 0400); fprintf(stderr, "%s need a fifo name\n", argv[0]);
if (fifo) { exit(1);
}
fifo = mkfifo(argv[1], O_RDONLY|O_CREAT);
if (-1==fifo) {
perror("mkfifo fail"); perror("mkfifo fail");
exit(2); exit(2);
} }

View File

@ -1,6 +1,7 @@
/*** named pipe --- transmiter ***/ /*** named pipe --- transmiter ***/
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h>
#include <unistd.h> #include <unistd.h>
#include <fcntl.h> #include <fcntl.h>
#include "my-fifo.h" #include "my-fifo.h"
@ -15,6 +16,7 @@ if (-1==(fifo = open(argv[1], O_WRONLY))) {
perror("open fifo for wr"); perror("open fifo for wr");
exit(1); exit(1);
} }
memset(&message, 0, sizeof(Message));
message.pid = getpid(); message.pid = getpid();
message.timestamp = dtime(); message.timestamp = dtime();
write(fifo, &message, sizeof(Message)); write(fifo, &message, sizeof(Message));