From a42bb8a96e1e553660b97fca91fa8bad8a282988 Mon Sep 17 00:00:00 2001 From: Laurent MAZET Date: Mon, 29 Sep 2025 16:00:32 +0200 Subject: [PATCH] clean time type --- mq.c | 48 +++++++++++++++++++++++++++++------------------- mtime.h | 2 +- mutex.c | 2 +- pipe.c | 50 ++++++++++++++++++++++++++++++++------------------ semaphore.c | 2 +- stat.h | 4 +--- test.c | 9 ++++----- test.h | 4 +--- thread.c | 2 +- 9 files changed, 71 insertions(+), 52 deletions(-) diff --git a/mq.c b/mq.c index b29fd90..9c0b934 100644 --- a/mq.c +++ b/mq.c @@ -24,22 +24,28 @@ int nb_measurements = 0; char *message = "message queue"; -mqd_t mq = 0; - #define MAXBUF 1024 -sec_t receiver (void) +sec_t ping (mqd_t mq) { - printf ("Waiting for data...\n"); + printf ("Sending ping...\n"); for (int i = 0; i < nb_measurements; i++) { + + char buffer[MAXBUF] = { 0 }; + sprintf (buffer, "ping %d", i); + mtime_t ts1; sys_timestamp (&ts1); - char buffer[MAXBUF] = { 0 }; - int m = mq_receive (mq, buffer, sizeof(buffer), NULL); - if (m == -1) { - fprintf (stderr, "error: mq_receive (%d)\n", i); + if (mq_send (mq, buffer, strlen (buffer) + 1, 0) == -1) { + fprintf (stderr, "ping error: mq_send (%d)\n", i); + return none_e; + } + //printf ("send '%s'\n", buffer); + + if (mq_receive (mq, buffer, sizeof(buffer), NULL) == -1) { + fprintf (stderr, "ping error: mq_receive (%d)\n", i); return none_e; } //printf ("receive '%s'\n", buffer); @@ -52,18 +58,22 @@ sec_t receiver (void) return nsec_e; } -sec_t sender (void) +sec_t pong (mqd_t mq) { - printf ("Sending data...\n"); + printf ("Responding pong...\n"); for (int i = 0; i < nb_measurements; i++) { - char buffer[32] = { 0 }; - sprintf (buffer, "hello world %d", i); + char buffer[MAXBUF] = { 0 }; + + if (mq_receive (mq, buffer, sizeof(buffer), NULL) == -1) { + fprintf (stderr, "pong error: mq_receive (%d)\n", i); + return none_e; + } + //printf ("receive '%s'\n", buffer); - int m = mq_send (mq, buffer, strlen (buffer) + 1, 0); - if (m == -1) { - fprintf (stderr, "error: mq_send (%d)\n", i); + if (mq_send (mq, buffer, strlen (buffer) + 1, 0) == -1) { + fprintf (stderr, "pong error: mq_send (%d)\n", i); return none_e; } //printf ("send '%s'\n", buffer); @@ -72,7 +82,7 @@ sec_t sender (void) return usec_e; } -sec_t test (int64_t *buffer, int nb) +sec_t test (unsigned int *buffer, int nb) { /* set global variables */ @@ -88,7 +98,7 @@ sec_t test (int64_t *buffer, int nb) attr.mq_msgsize = MAXBUF; attr.mq_curmsgs = 0; - mq = mq_open ("/test_queue", O_CREAT | O_RDWR, 0644, &attr); + mqd_t mq = mq_open ("/test_queue", O_CREAT | O_RDWR, 0644, &attr); if (mq == -1) { fprintf (stderr, "error: mq_open\n"); return none_e; @@ -99,12 +109,12 @@ sec_t test (int64_t *buffer, int nb) fprintf (stderr, "error: fork\n"); return none_e; } else if (pid == 0) { - sender (); + pong (mq); mq_close (mq); exit (0); } - sec_t rc = receiver (); + sec_t rc = ping (mq); mq_close (mq); if (kill (pid, SIGTERM) == 0) { diff --git a/mtime.h b/mtime.h index aedd6ff..c07168f 100644 --- a/mtime.h +++ b/mtime.h @@ -3,7 +3,7 @@ #ifndef __MTIME_H__ #define __MTIME_H__ -#include "inttypes.h" +#include typedef unsigned int mstime_t; diff --git a/mutex.c b/mutex.c index 3701b74..001feab 100644 --- a/mutex.c +++ b/mutex.c @@ -47,7 +47,7 @@ void *mutex_taker_task (__attribute__((unused)) void *arg) pthread_exit (NULL); } -sec_t test (int64_t *buffer, int nb) +sec_t test (unsigned int *buffer, int nb) { /* set global variables */ diff --git a/pipe.c b/pipe.c index f1c7e00..74f15cd 100644 --- a/pipe.c +++ b/pipe.c @@ -22,49 +22,63 @@ char *message = "pipe"; #define MAXBUF 1024 -sec_t receiver (int fd) +sec_t ping (int fdin, int fdout) { - printf ("Waiting for data...\n"); + printf ("Sending ping...\n"); for (int i = 0; i < nb_measurements; i++) { + + char buffer[MAXBUF] = { 0 }; + sprintf (buffer, "ping %d", i); + mtime_t ts1; sys_timestamp (&ts1); - char buffer[MAXBUF] = { 0 }; - if (read (fd, buffer, sizeof(buffer)) == -1) { - fprintf (stderr, "error: read (%d)\n", i); + if (write (fdout, buffer, strlen (buffer) + 1) == -1) { + fprintf (stderr, "ping error: write (%d)\n", i); + return none_e; + } + //printf ("write '%s'\n", buffer); + + if (read (fdin, buffer, sizeof(buffer)) == -1) { + fprintf (stderr, "ping error: read (%d)\n", i); return none_e; } - //printf ("receive '%s'\n", buffer); + //printf ("read '%s'\n", buffer); mtime_t ts2; sys_timestamp (&ts2); deltas[i] = diff_timestamp (&ts2, &ts1); } - return usec_e; + return nsec_e; } -sec_t sender (int fd) +sec_t pong (int fdin, int fdout) { - printf ("Sending data...\n"); + printf ("Responding pong...\n"); for (int i = 0; i < nb_measurements; i++) { - char buffer[32] = { 0 }; - sprintf (buffer, "hello world %d", i); + char buffer[MAXBUF] = { 0 }; - if (write (fd, buffer, strlen (buffer) + 1) == -1) { - fprintf (stderr, "error: write (%d)\n", i); + if (read (fdin, buffer, sizeof(buffer)) == -1) { + fprintf (stderr, "ping error: read (%d)\n", i); return none_e; } - //printf ("send '%s'\n", buffer); + //printf ("read '%s'\n", buffer); + + if (write (fdout, buffer, strlen (buffer) + 1) == -1) { + fprintf (stderr, "ping error: write (%d)\n", i); + return none_e; + } + //printf ("write '%s'\n", buffer); } return usec_e; } -sec_t test (int64_t *buffer, int nb) +sec_t test (unsigned int *buffer, int nb) { /* set global variables */ @@ -86,15 +100,15 @@ sec_t test (int64_t *buffer, int nb) fprintf (stderr, "error: fork\n"); return none_e; } else if (pid == 0) { + pong (pipefd[0], pipefd[1]); close (pipefd[0]); - sender (pipefd[1]); close (pipefd[1]); exit (0); } - close (pipefd[1]); - sec_t rc = receiver (pipefd[0]); + sec_t rc = ping (pipefd[0], pipefd[1]); close (pipefd[0]); + close (pipefd[1]); if (kill (pid, SIGTERM) == 0) { int wstatus; diff --git a/semaphore.c b/semaphore.c index 6c2fecc..5aff472 100644 --- a/semaphore.c +++ b/semaphore.c @@ -44,7 +44,7 @@ void* trythis (__attribute__((unused)) void *arg) return NULL; } -sec_t test (int64_t *buffer, int nb) +sec_t test (unsigned int *buffer, int nb) { /* set global variables */ diff --git a/stat.h b/stat.h index bb51d07..82880a6 100644 --- a/stat.h +++ b/stat.h @@ -3,8 +3,6 @@ #ifndef __STAT_H__ #define __STAT_H__ -#include - -void compute_statistics (int64_t *points, int nb, int bins); +void compute_statistics (unsigned int *points, int nb, int bins); #endif /* __STAT_H__ */ diff --git a/test.c b/test.c index d7847f5..f91ec7a 100644 --- a/test.c +++ b/test.c @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -137,7 +136,7 @@ int main (int argc, char *argv[]) /* main process */ - int64_t *buffer = (int64_t *) calloc (nb, sizeof (int64_t)); + unsigned int *buffer = (unsigned int *) calloc (nb, sizeof (unsigned int)); assert (buffer); printf ("Test: %s\n", (message) ? message : "unknown"); @@ -155,7 +154,7 @@ int main (int argc, char *argv[]) FILE *fd = fopen (output, "w"); assert (fd); for (int i = 0; i < nb; i++) { - fprintf (fd, "%ld\n", buffer[i]); + fprintf (fd, "%d\n", buffer[i]); } fclose (fd); } @@ -174,7 +173,7 @@ int main (int argc, char *argv[]) int change_done = 0; for (int i = 1; i < nb - 1; i++) { if (buffer[i + 1] < buffer[i]) { - int64_t tmp = buffer[i]; + unsigned int tmp = buffer[i]; buffer[i] = buffer[i + 1]; buffer[i + 1] = tmp; change_done = 1; @@ -186,7 +185,7 @@ int main (int argc, char *argv[]) } int n = nb * abe_per / 100; for (int i = 0; i < nb - n; i++) { - buffer[i] = buffer[i - n / 2]; + buffer[i] = buffer[i + n / 2]; } nb -= n; } diff --git a/test.h b/test.h index 18b0fcc..2e38473 100644 --- a/test.h +++ b/test.h @@ -3,8 +3,6 @@ #ifndef __TEST_H__ #define __TEST_H__ -#include - typedef enum { none_e = 0, sec_e, @@ -13,6 +11,6 @@ typedef enum { nsec_e } sec_t; -sec_t test (int64_t *buffer, int nb); +sec_t test (unsigned int *buffer, int nb); #endif /* __TEST_H__ */ diff --git a/thread.c b/thread.c index 2f6c172..be55b74 100644 --- a/thread.c +++ b/thread.c @@ -20,7 +20,7 @@ void* dummy_thread(void *arg) { return NULL; } -sec_t test (int64_t *buffer, int nb) +sec_t test (unsigned int *buffer, int nb) { /* set global variables */ -- 2.30.2