diff --git a/src/task.c b/src/task.c
index f611ab8115b7ce24ddc1bd605df4cfd65de6348f..fb69cfbea14294bfb0909cab6892b13c4d13be38 100644
--- a/src/task.c
+++ b/src/task.c
@@ -304,3 +304,29 @@ void task_addunlock_old(struct task *ta, struct task *tb) {
 
   lock_unlock_blind(&ta->lock);
 }
+
+/**
+ * @brief Prints the list of tasks contained in a given mask
+ *
+ * @param The mask to analyse
+ */
+void task_print_mask(unsigned int mask) {
+
+  printf("task_print_mask: The tasks to run are [");
+  for (int k = 1; k < task_type_count; k++)
+    printf(" %s=%s", taskID_names[k], (mask & (1 << k)) ? "yes" : "no");
+  printf(" ]\n");
+}
+
+/**
+ * @brief Prints the list of subtasks contained in a given submask
+ *
+ * @param The submask to analyse
+ */
+void task_print_submask(unsigned int submask) {
+
+  printf("task_print_submask: The subtasks to run are [");
+  for (int k = 1; k < task_subtype_count; k++)
+    printf(" %s=%s", subtaskID_names[k], (submask & (1 << k)) ? "yes" : "no");
+  printf(" ]\n");
+}
diff --git a/src/task.h b/src/task.h
index 1203a954c9b9b5314683f61428995d47fdea7dc9..b86631cc49bfad102302e3bab380bfb5eb8ed1e0 100644
--- a/src/task.h
+++ b/src/task.h
@@ -96,6 +96,7 @@ void task_unlock(struct task *t);
 float task_overlap(const struct task *ta, const struct task *tb);
 int task_lock(struct task *t);
 void task_print_mask(unsigned int mask);
+void task_print_submask(unsigned int submask);
 void task_do_rewait(struct task *t);
 
 #endif /* SWIFT_TASK_H */