fileincref -> filedup (consistent with idup)
This commit is contained in:
parent
7895178df3
commit
1ccff18b24
4 changed files with 9 additions and 9 deletions
2
defs.h
2
defs.h
|
@ -28,7 +28,7 @@ int exec(char*, char**);
|
|||
// file.c
|
||||
struct file* filealloc(void);
|
||||
void fileclose(struct file*);
|
||||
void fileincref(struct file*);
|
||||
struct file* filedup(struct file*);
|
||||
void fileinit(void);
|
||||
int fileread(struct file*, char*, int n);
|
||||
int filestat(struct file*, struct stat*);
|
||||
|
|
7
file.c
7
file.c
|
@ -41,14 +41,15 @@ filealloc(void)
|
|||
}
|
||||
|
||||
// Increment ref count for file f.
|
||||
void
|
||||
fileincref(struct file *f)
|
||||
struct file*
|
||||
filedup(struct file *f)
|
||||
{
|
||||
acquire(&file_table_lock);
|
||||
if(f->ref < 1 || f->type == FD_CLOSED)
|
||||
panic("fileincref");
|
||||
panic("filedup");
|
||||
f->ref++;
|
||||
release(&file_table_lock);
|
||||
return f;
|
||||
}
|
||||
|
||||
// Read from file f. Addr is kernel address.
|
||||
|
|
7
proc.c
7
proc.c
|
@ -129,10 +129,9 @@ copyproc(struct proc *p)
|
|||
}
|
||||
memmove(np->mem, p->mem, np->sz);
|
||||
|
||||
for(i = 0; i < NOFILE; i++){
|
||||
if((np->ofile[i] = p->ofile[i]) != 0)
|
||||
fileincref(np->ofile[i]);
|
||||
}
|
||||
for(i = 0; i < NOFILE; i++)
|
||||
if(p->ofile[i])
|
||||
np->ofile[i] = filedup(p->ofile[i]);
|
||||
np->cwd = idup(p->cwd);
|
||||
}
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ sys_dup(void)
|
|||
return -1;
|
||||
if((fd=fdalloc(f)) < 0)
|
||||
return -1;
|
||||
fileincref(f);
|
||||
filedup(f);
|
||||
return fd;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue