SCCS-vsn: sys/kern/vfs_vnops.c 3.3
-/* vfs_vnops.c 3.2 %G% */
+/* vfs_vnops.c 3.3 %G% */
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
+struct file *lastf = &file[0];
/*
* Allocate a user file descriptor
* and a file structure.
/*
* Allocate a user file descriptor
* and a file structure.
i = ufalloc();
if(i < 0)
return(NULL);
i = ufalloc();
if(i < 0)
return(NULL);
- for(fp = &file[0]; fp < &file[NFILE]; fp++)
- if(fp->f_count == 0) {
- u.u_ofile[i] = fp;
- fp->f_count++;
- fp->f_un.f_offset = 0;
- return(fp);
- }
+ for(fp = lastf; fp < &file[NFILE]; fp++)
+ if(fp->f_count == 0)
+ goto slot;
+ for(fp = &file[0]; fp < lastf; fp++)
+ if(fp->f_count == 0)
+ goto slot;
printf("no file\n");
u.u_error = ENFILE;
return(NULL);
printf("no file\n");
u.u_error = ENFILE;
return(NULL);
+slot:
+ u.u_ofile[i] = fp;
+ fp->f_count++;
+ fp->f_un.f_offset = 0;
+ lastf = fp + 1;
+ return(fp);