+/* added to manage the communication action's heap */
+static void net_action_update_index_heap(void *action, int i)
+{
+ surf_action_cpu_Cas01_t a = action;
+ GENERIC_LMM_ACTION(a).index_heap = i;
+}
+
+/* insert action on heap using a given key and a hat (heap_action_type)
+ * a hat can be of three types for communications:
+ *
+ * NORMAL = this is a normal heap entry stating the date to finish transmitting
+ * LATENCY = this is a heap entry to warn us when the latency is payed
+ * MAX_DURATION =this is a heap entry to warn us when the max_duration limit is reached
+ */
+static void heap_insert(surf_action_cpu_Cas01_t action, double key,
+ enum heap_action_type hat)
+{
+ GENERIC_LMM_ACTION(action).hat = hat;
+ xbt_heap_push(cpu_action_heap, action, key);
+}
+
+static void heap_remove(surf_action_cpu_Cas01_t action)
+{
+ GENERIC_LMM_ACTION(action).hat = NOTSET;
+ if (GENERIC_LMM_ACTION(action).index_heap >= 0) {
+ xbt_heap_remove(cpu_action_heap, GENERIC_LMM_ACTION(action).index_heap);
+ }
+}
+
+static void *cpu_create_resource(const char *name, double power_peak,