Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
f82c6a4b7e4707e2f9cd15688e3395a48d1c2cf2
[simgrid.git] / src / instr / instr_smx.c
1 /* Copyright (c) 2010. The SimGrid Team.
2  * All rights reserved.                                                     */
3
4 /* This program is free software; you can redistribute it and/or modify it
5   * under the terms of the license (GNU LGPL) which comes with this package. */
6
7 #include "instr/instr_private.h"
8
9 #ifdef HAVE_TRACING
10
11 static long long int counter = 0;       /* to uniquely identify simix actions */
12
13 void TRACE_smx_host_execute(smx_action_t act)
14 {
15   if (!TRACE_is_active())
16     return;
17
18   act->counter = counter++;
19   char *category = TRACE_category_get(SIMIX_process_self());
20   if (category) {
21     act->category = xbt_new(char, strlen(category) + 1);
22     strncpy(act->category, category, strlen(category) + 1);
23   }
24   TRACE_surf_resource_utilization_start(act);
25 }
26
27 void TRACE_smx_action_communicate(smx_action_t act, smx_process_t proc)
28 {
29   if (!TRACE_is_active())
30     return;
31
32   act->counter = counter++;
33   char *category = TRACE_category_get(proc);
34   if (category) {
35     act->category = xbt_strdup(category);
36   }
37   TRACE_surf_resource_utilization_start(act);
38 }
39
40 void TRACE_smx_action_destroy(smx_action_t act)
41 {
42   if (!TRACE_is_active())
43     return;
44
45   if (act->category) {
46     xbt_free(act->category);
47   }
48   TRACE_surf_resource_utilization_end(act);
49 }
50
51 #endif /* HAVE_TRACING */