patch-2.0.2 linux/kernel/exit.c
Next file: linux/kernel/fork.c
Previous file: linux/include/net/tcp.h
Back to the patch index
Back to the overall index
- Lines: 43
- Date:
Fri Jul 5 13:48:39 1996
- Orig file:
v2.0.1/linux/kernel/exit.c
- Orig date:
Wed Jul 3 22:05:20 1996
diff -u --recursive --new-file v2.0.1/linux/kernel/exit.c linux/kernel/exit.c
@@ -393,6 +393,26 @@
}
}
+static inline void close_files(struct files_struct * files)
+{
+ int i, j;
+
+ j = 0;
+ for (;;) {
+ unsigned long set = files->open_fds.fds_bits[j];
+ i = j * __NFDBITS;
+ j++;
+ if (i >= NR_OPEN)
+ break;
+ while (set) {
+ if (set & 1)
+ close_fp(files->fd[i]);
+ i++;
+ set >>= 1;
+ }
+ }
+}
+
static inline void __exit_files(struct task_struct *tsk)
{
struct files_struct * files = tsk->files;
@@ -400,14 +420,7 @@
if (files) {
tsk->files = NULL;
if (!--files->count) {
- int i;
- for (i=0 ; i<NR_OPEN ; i++) {
- struct file * filp = files->fd[i];
- if (!filp)
- continue;
- files->fd[i] = NULL;
- close_fp(filp);
- }
+ close_files(files);
kfree(files);
}
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov