Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
do not rely on deployment file
[simgrid.git] / examples / deprecated / msg / trace-categories / trace-categories.c
1 /* Copyright (c) 2010-2020. The 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 #include "simgrid/msg.h"
7
8 static int master(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[])
9 {
10   long number_of_tasks = 10;
11   long workers_count   = 1;
12
13   for (int i = 0; i < number_of_tasks; i++) {
14     msg_task_t task = NULL;
15
16     /* creating task and setting its category */
17     if (i % 2) {
18       task = MSG_task_create("task_compute", 10000000, 0, NULL);
19       MSG_task_set_category(task, "compute");
20     } else if (i % 3) {
21       task = MSG_task_create("task_request", 10, 10, NULL);
22       MSG_task_set_category(task, "request");
23     } else {
24       task = MSG_task_create("task_data", 10, 10000000, NULL);
25       MSG_task_set_category(task, "data");
26     }
27     MSG_task_send(task, "master_mailbox");
28   }
29
30   for (int i = 0; i < workers_count; i++) {
31     msg_task_t finalize = MSG_task_create("finalize", 0, 1000, 0);
32     MSG_task_set_category(finalize, "finalize");
33     MSG_task_send(finalize, "master_mailbox");
34   }
35
36   return 0;
37 }
38
39 static int worker(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[])
40 {
41   msg_task_t task = NULL;
42
43   while (1) {
44     MSG_task_receive(&(task), "master_mailbox");
45
46     if (strcmp(MSG_task_get_name(task), "finalize") == 0) {
47       MSG_task_destroy(task);
48       break;
49     }
50
51     MSG_task_execute(task);
52     MSG_task_destroy(task);
53     task = NULL;
54   }
55   return 0;
56 }
57
58 int main(int argc, char *argv[])
59 {
60   MSG_init(&argc, argv);
61   xbt_assert(argc > 1, "Usage: %s platform_file\n \tExample: %s msg_platform.xml\n", argv[0], argv[0]);
62
63   MSG_create_environment(argv[1]);
64
65   /* declaring user categories with RGB colors */
66   TRACE_category_with_color ("compute", "1 0 0"); //red
67   TRACE_category_with_color ("request", "0 1 0"); //green
68   TRACE_category_with_color ("data", "0 0 1");    //blue
69   TRACE_category_with_color ("finalize", "0 0 0");//black
70
71   MSG_process_create("master", master, NULL, MSG_host_by_name("Tremblay"));
72   MSG_process_create("worker", worker, NULL, MSG_host_by_name("Fafard"));
73
74   MSG_main();
75   return 0;
76 }