Merge branch 'device-sys'
[lunaix-os.git] / lunaix-os / kernel / process / sched.c
index f58710ee347387eee1629214b8b3c270c25b1a62..3ee0e7666c32eafe97c3436ac1c2a9ccc103f64b 100644 (file)
@@ -4,6 +4,7 @@
 #include <hal/apic.h>
 #include <hal/cpu.h>
 
+#include <lunaix/fs/taskfs.h>
 #include <lunaix/mm/cake.h>
 #include <lunaix/mm/kalloc.h>
 #include <lunaix/mm/pmm.h>
@@ -331,11 +332,20 @@ destroy_process(pid_t pid)
     sched_ctx._procs[index] = 0;
 
     llist_delete(&proc->siblings);
+    llist_delete(&proc->grp_member);
+    llist_delete(&proc->tasks);
+    llist_delete(&proc->sleep.sleepers);
+
+    taskfs_invalidate(pid);
+
+    if (proc->cwd) {
+        vfs_unref_dnode(proc->cwd);
+    }
 
     for (size_t i = 0; i < VFS_MAX_FD; i++) {
         struct v_fd* fd = proc->fdtable->fds[i];
         if (fd)
-            vfs_close(fd->file);
+            vfs_pclose(fd->file, pid);
     }
 
     vfree(proc->fdtable);