diff --git a/runtime/openmp/control/runtime_context.c b/runtime/openmp/control/runtime_context.c
index f4777c74e2fc4e22cde4fcdb71f361ca7898ecd9..19dded3962ab770e84d887ae7f25cd12cc633c8e 100644
--- a/runtime/openmp/control/runtime_context.c
+++ b/runtime/openmp/control/runtime_context.c
@@ -42,18 +42,21 @@ void RUNTIME_context_destroy( CHAM_context_t *chamctxt )
 /**
  *
  */
-void RUNTIME_enable( int lever )
+void RUNTIME_enable( void *runtime_ctxt, int lever )
 {
     switch (lever)
     {
-        case CHAMELEON_PROFILING_MODE:
-            fprintf(stderr, "Profiling is not available with OpenMP\n");
-            break;
-        case CHAMELEON_BOUND:
-            fprintf(stderr, "Bound computation is not available with OpenMP\n");
-            break;
-        default:
-            return;
+    case CHAMELEON_DAG:
+        fprintf(stderr, "DAG is not available with OpenMP\n");
+        break;
+    case CHAMELEON_PROFILING_MODE:
+        fprintf(stderr, "Profiling is not available with OpenMP\n");
+        break;
+    case CHAMELEON_BOUND:
+        fprintf(stderr, "Bound computation is not available with OpenMP\n");
+        break;
+    default:
+        return;
     }
     return;
 }
@@ -61,18 +64,21 @@ void RUNTIME_enable( int lever )
 /**
  *
  */
-void RUNTIME_disable( int lever )
+void RUNTIME_disable( void *runtime_ctxt, int lever )
 {
     switch (lever)
     {
-        case CHAMELEON_PROFILING_MODE:
-            fprintf(stderr, "Profiling is not available with OpenMP\n");
-            break;
-        case CHAMELEON_BOUND:
-            fprintf(stderr, "Bound computation is not available with OpenMP\n");
-            break;
-        default:
-            return;
+    case CHAMELEON_DAG:
+        fprintf(stderr, "DAG is not available with OpenMP\n");
+        break;
+    case CHAMELEON_PROFILING_MODE:
+        fprintf(stderr, "Profiling is not available with OpenMP\n");
+        break;
+    case CHAMELEON_BOUND:
+        fprintf(stderr, "Bound computation is not available with OpenMP\n");
+        break;
+    default:
+        return;
     }
     return;
 }
diff --git a/runtime/parsec/control/runtime_context.c b/runtime/parsec/control/runtime_context.c
index 6762593839ed4144593b7e1c958ab61f9b249fb8..aae3b7831dbe297009886df17e2ed819b4c17121 100644
--- a/runtime/parsec/control/runtime_context.c
+++ b/runtime/parsec/control/runtime_context.c
@@ -42,11 +42,18 @@ void RUNTIME_context_destroy( CHAM_context_t *chamctxt )
 /**
  *
  */
-void RUNTIME_enable(int lever)
+void RUNTIME_enable( void *runtime_ctxt, int lever )
 {
     switch (lever)
     {
+    case CHAMELEON_DAG:
+        fprintf(stderr, "DAG is not available with PaRSEC\n");
+        break;
     case CHAMELEON_PROFILING_MODE:
+        parsec_profiling_start();
+        break;
+    case CHAMELEON_BOUND:
+        fprintf(stderr, "Bound computation is not available with Quark\n");
         break;
     default:
         return;
@@ -57,11 +64,18 @@ void RUNTIME_enable(int lever)
 /**
  *
  */
-void RUNTIME_disable(int lever)
+void RUNTIME_disable( void *runtime_ctxt, int lever )
 {
     switch (lever)
     {
+    case CHAMELEON_DAG:
+        fprintf(stderr, "DAG is not available with PaRSEC\n");
+        break;
     case CHAMELEON_PROFILING_MODE:
+        parsec_profiling_stop();
+        break;
+    case CHAMELEON_BOUND:
+        fprintf(stderr, "Bound computation is not available with PaRSEC\n");
         break;
     default:
         return;
diff --git a/runtime/quark/control/runtime_context.c b/runtime/quark/control/runtime_context.c
index e3e2cac3513c95d357c0cf8c7dab15c50dd5ffe5..93868c6fc1921f7f0a35c0801efbb65644bec1ef 100644
--- a/runtime/quark/control/runtime_context.c
+++ b/runtime/quark/control/runtime_context.c
@@ -42,18 +42,22 @@ void RUNTIME_context_destroy( CHAM_context_t *chamctxt )
 /**
  *
  */
-void RUNTIME_enable( int lever )
+void RUNTIME_enable( void *runtime_ctxt, int lever )
 {
     switch (lever)
     {
-        case CHAMELEON_PROFILING_MODE:
-            fprintf(stderr, "Profiling is not available with Quark\n");
-            break;
-        case CHAMELEON_BOUND:
-            fprintf(stderr, "Bound computation is not available with Quark\n");
-            break;
-        default:
-            return;
+    case CHAMELEON_DAG:
+        QUARK_Barrier( runtime_ctxt );
+        QUARK_DOT_DAG_Enable( runtime_ctxt, 1 );
+        break;
+    case CHAMELEON_PROFILING_MODE:
+        fprintf(stderr, "Profiling is not available with Quark\n");
+        break;
+    case CHAMELEON_BOUND:
+        fprintf(stderr, "Bound computation is not available with Quark\n");
+        break;
+    default:
+        return;
     }
     return;
 }
@@ -61,18 +65,22 @@ void RUNTIME_enable( int lever )
 /**
  *
  */
-void RUNTIME_disable( int lever )
+void RUNTIME_disable( void *runtime_ctxt, int lever )
 {
     switch (lever)
     {
-        case CHAMELEON_PROFILING_MODE:
-            fprintf(stderr, "Profiling is not available with Quark\n");
-            break;
-        case CHAMELEON_BOUND:
-            fprintf(stderr, "Bound computation is not available with Quark\n");
-            break;
-        default:
-            return;
+    case CHAMELEON_DAG:
+        QUARK_Barrier( runtime_ctxt );
+        QUARK_DOT_DAG_Enable( runtime_ctxt, 0 );
+        break;
+    case CHAMELEON_PROFILING_MODE:
+        fprintf(stderr, "Profiling is not available with Quark\n");
+        break;
+    case CHAMELEON_BOUND:
+        fprintf(stderr, "Bound computation is not available with Quark\n");
+        break;
+    default:
+        return;
     }
     return;
 }
diff --git a/runtime/starpu/control/runtime_context.c b/runtime/starpu/control/runtime_context.c
index 71272e934c3f4d87cf400f556c6fa86bf33413fe..2bf597b24c4d2f2a1a8f5003f6a1a5e6761c5de5 100644
--- a/runtime/starpu/control/runtime_context.c
+++ b/runtime/starpu/control/runtime_context.c
@@ -69,18 +69,21 @@ void RUNTIME_context_destroy( CHAM_context_t *chamctxt )
 /**
  *
  */
-void RUNTIME_enable( int lever )
+void RUNTIME_enable( void *runtime_ctxt, int lever )
 {
     switch (lever)
     {
-        case CHAMELEON_PROFILING_MODE:
-            starpu_profiling_status_set(STARPU_PROFILING_ENABLE);
-            break;
-        case CHAMELEON_BOUND:
-            starpu_bound_start(0, 0);
-            break;
-        default:
-            return;
+    case CHAMELEON_DAG:
+        fprintf(stderr, "StarPU is providing DAG generation through tracing support (CHAMELEON_PROFILING_MODE)\n");
+        break;
+    case CHAMELEON_PROFILING_MODE:
+        starpu_profiling_status_set(STARPU_PROFILING_ENABLE);
+        break;
+    case CHAMELEON_BOUND:
+        starpu_bound_start(0, 0);
+        break;
+    default:
+        return;
     }
     return;
 }
@@ -88,18 +91,21 @@ void RUNTIME_enable( int lever )
 /**
  *
  */
-void RUNTIME_disable( int lever )
+void RUNTIME_disable( void *runtime_ctxt, int lever )
 {
     switch (lever)
     {
-        case CHAMELEON_PROFILING_MODE:
-            starpu_profiling_status_set(STARPU_PROFILING_DISABLE);
-            break;
-        case CHAMELEON_BOUND:
-            starpu_bound_stop();
-            break;
-        default:
-            return;
+    case CHAMELEON_DAG:
+        fprintf(stderr, "StarPU is providing DAG generation through tracing support (CHAMELEON_PROFILING_MODE)\n");
+        break;
+    case CHAMELEON_PROFILING_MODE:
+        starpu_profiling_status_set(STARPU_PROFILING_DISABLE);
+        break;
+    case CHAMELEON_BOUND:
+        starpu_bound_stop();
+        break;
+    default:
+        return;
     }
     return;
 }