Benchmark
 All Classes Files Functions Variables Typedefs Macros
Macros | Functions
fork.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "benchmark.h"

Macros

#define N   42
 

Functions

int main (int argc, char *argv[])
 

Macro Definition Documentation

#define N   42

Function Documentation

int main ( int  argc,
char *  argv[] 
)
11  {
12  timer *t = timer_alloc();
13  recorder *parent_rec = recorder_alloc("parent.csv");
14  recorder *child_rec = recorder_alloc("child.csv");
15 
16  pid_t pid;
17  int status, i;
18 
19  for (i = 0; i < N; i++) {
20  start_timer(t);
21  pid = fork();
22 
23  if (pid == -1) {
24  // erreur à l'exécution de fork
25  perror("fork");
26  return EXIT_FAILURE;
27  }
28  // pas d'erreur
29  // BEGIN
30  if (pid == 0) {
31  // processus fils
32  write_record(child_rec, i, stop_timer(t));
33 
34  recorder_free(child_rec);
35  recorder_free(parent_rec);
36  timer_free(t);
37 
38  return EXIT_SUCCESS;
39  }
40  else {
41  // processus père
42  write_record(parent_rec, i, stop_timer(t));
43  pid = waitpid(pid, &status, 0);
44  if (pid == -1) {
45  perror("wait");
46  return EXIT_FAILURE;
47  }
48  }
49  // END
50  }
51 
52  recorder_free(child_rec);
53  recorder_free(parent_rec);
54  timer_free(t);
55 
56  return EXIT_SUCCESS;
57 }
void timer_free(timer *t)
Retourne le temps en nanosecondes depuis le début de mesure dans t
Definition: benchmark.c:172
recorder écrit les temps dans un fichier .csv
Definition: benchmark.c:208
void write_record(recorder *rec, long int x, long int time)
Écris le temps time en correspondance avec x
Definition: benchmark.c:245
timer permet de mesurer le temps écoulé entre deux moments
Definition: benchmark.c:43
timer * t
Definition: memfork.c:25
#define N
Definition: fork.c:9
int i
Definition: mutsem.c:43
void start_timer(timer *t)
Stoque le temps actuel comme début de la mesure dans t
Definition: benchmark.c:87
recorder * recorder_alloc(char *filename)
Alloue un recorder
Definition: benchmark.c:219
void recorder_free(recorder *rec)
Libère toutes les resources utilisées par rec
Definition: benchmark.c:263
timer * timer_alloc()
Alloue un timer
Definition: benchmark.c:63
long int stop_timer(timer *t)
Retourne le temps en nanosecondes depuis le début de mesure dans t
Definition: benchmark.c:133