summaryrefslogtreecommitdiff
path: root/nuttx/sched/group_leave.c
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/sched/group_leave.c')
-rw-r--r--nuttx/sched/group_leave.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/nuttx/sched/group_leave.c b/nuttx/sched/group_leave.c
index add424185..f5dca1829 100644
--- a/nuttx/sched/group_leave.c
+++ b/nuttx/sched/group_leave.c
@@ -177,6 +177,13 @@ void group_leave(FAR _TCB *tcb)
#if defined(CONFIG_SCHED_HAVE_PARENT) && defined(CONFIG_SCHED_CHILD_STATUS)
group_removechildren(tcb->group);
#endif
+ /* Free all file-related resources now. We really need to close
+ * files as soon as possible while we still have a functioning task.
+ */
+
+#if CONFIG_NFILE_DESCRIPTORS > 0
+ (void)sched_releasefiles(tcb);
+#endif
/* Release all shared environment variables */
#ifndef CONFIG_DISABLE_ENVIRON
@@ -231,7 +238,14 @@ void group_leave(FAR _TCB *tcb)
#if defined(CONFIG_SCHED_HAVE_PARENT) && defined(CONFIG_SCHED_CHILD_STATUS)
group_removechildren(tcb->group);
#endif
- /* Release all shared environment variables */
+ /* Free all file-related resources now. We really need to close
+ * files as soon as possible while we still have a functioning task.
+ */
+
+#if CONFIG_NFILE_DESCRIPTORS > 0
+ (void)sched_releasefiles(tcb);
+#endif
+ /* Release all shared environment variables */
#ifndef CONFIG_DISABLE_ENVIRON
env_release(tcb);