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);
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);
return usec_e;
}
-sec_t test (int64_t *buffer, int nb)
+sec_t test (unsigned int *buffer, int nb)
{
/* set global variables */
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;
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) {
#ifndef __MTIME_H__
#define __MTIME_H__
-#include "inttypes.h"
+#include <time.h>
typedef unsigned int mstime_t;
pthread_exit (NULL);
}
-sec_t test (int64_t *buffer, int nb)
+sec_t test (unsigned int *buffer, int nb)
{
/* set global variables */
#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 */
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;
return NULL;
}
-sec_t test (int64_t *buffer, int nb)
+sec_t test (unsigned int *buffer, int nb)
{
/* set global variables */
#ifndef __STAT_H__
#define __STAT_H__
-#include <inttypes.h>
-
-void compute_statistics (int64_t *points, int nb, int bins);
+void compute_statistics (unsigned int *points, int nb, int bins);
#endif /* __STAT_H__ */
#include <assert.h>
-#include <inttypes.h>
#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
/* 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");
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);
}
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;
}
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;
}
#ifndef __TEST_H__
#define __TEST_H__
-#include <inttypes.h>
-
typedef enum {
none_e = 0,
sec_e,
nsec_e
} sec_t;
-sec_t test (int64_t *buffer, int nb);
+sec_t test (unsigned int *buffer, int nb);
#endif /* __TEST_H__ */
return NULL;
}
-sec_t test (int64_t *buffer, int nb)
+sec_t test (unsigned int *buffer, int nb)
{
/* set global variables */