Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
GRAS replayer partially works. Need a real platform to test it now
[simgrid.git] / examples / gras / replay / workload.h
1 /* Copyright (c) 2009 Da SimGrid Team.  All rights reserved.                */
2
3 /* This program is free software; you can redistribute it and/or modify it
4  * under the terms of the license (GNU LGPL) which comes with this package. */
5
6 /* This datatype stores a a trace as produced by examples/simdag/dax, or other means
7  * It can be replayed in simulation with examples/msg/actions or on a real platform with
8  * examples/gras/replay.
9  */
10
11 #ifndef XBT_WORKLOAD_H_
12 #define XBT_WORKLOAD_H_
13
14 #include "xbt/misc.h"
15 #include "xbt/dynar.h"
16
17 /* kind of elements */
18 #define XBT_WORKLOAD_COMPUTE 0
19 #define XBT_WORKLOAD_SEND 1
20 #define XBT_WORKLOAD_RECV 2
21
22 /* one command to do */
23 typedef struct {
24   /* keep it in sync with function xbt_workload_declare_datadesc() */
25
26   char *who;      /* the slave who should do it */
27   char *comment;  /* a comment placed at the end of the line, if any */
28   int action;     /* 0: compute(darg flops); 1: send darg bytes to strarg; 2: recv darg bytes from strarg */
29   double date;    /* when it occured when the trace was captured */
30   double d_arg;   /* double argument, if any */
31   char * str_arg; /* string argument, if any */
32 } s_xbt_workload_elm_t, *xbt_workload_elm_t;
33
34 XBT_PUBLIC(xbt_workload_elm_t) xbt_workload_elm_parse(char *line);
35 XBT_PUBLIC(void) xbt_workload_elm_free(xbt_workload_elm_t cmd);
36 XBT_PUBLIC(void) xbt_workload_elm_free_voidp(void*cmd);
37 XBT_PUBLIC(char *)xbt_workload_elm_to_string(xbt_workload_elm_t cmd);
38 XBT_PUBLIC(int) xbt_workload_elm_cmp_who_date(const void* _c1, const void* _c2);
39 XBT_PUBLIC(void) xbt_workload_sort_who_date(xbt_dynar_t c);
40 XBT_PUBLIC(xbt_dynar_t) xbt_workload_parse_file(char *filename);
41
42 XBT_PUBLIC(void) xbt_workload_declare_datadesc(void);
43
44
45 typedef struct {
46   int size;
47   char *chunk;
48 } s_xbt_workload_data_chunk_t,*xbt_workload_data_chunk_t;
49 XBT_PUBLIC(xbt_workload_data_chunk_t) xbt_workload_data_chunk_new(int size);
50 XBT_PUBLIC(void) xbt_workload_data_chunk_free(xbt_workload_data_chunk_t c);
51
52 #endif /* XBT_WORKLOAD_H_ */