summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--defs.h4
-rw-r--r--syscall.c18
-rw-r--r--sysfile.c4
3 files changed, 13 insertions, 13 deletions
diff --git a/defs.h b/defs.h
index efbbe3d..7f1e88d 100644
--- a/defs.h
+++ b/defs.h
@@ -142,8 +142,8 @@ char* strncpy(char*, const char*, int);
int argint(int, int*);
int argptr(int, char**, int);
int argstr(int, char**);
-int fetchint(struct proc*, uint, int*);
-int fetchstr(struct proc*, uint, char**);
+int fetchint(uint, int*);
+int fetchstr(uint, char**);
void syscall(void);
// timer.c
diff --git a/syscall.c b/syscall.c
index 0918da7..45f758e 100644
--- a/syscall.c
+++ b/syscall.c
@@ -13,28 +13,28 @@
// library system call function. The saved user %esp points
// to a saved program counter, and then the first argument.
-// Fetch the int at addr from process p.
+// Fetch the int at addr from the current process.
int
-fetchint(struct proc *p, uint addr, int *ip)
+fetchint(uint addr, int *ip)
{
- if(addr >= p->sz || addr+4 > p->sz)
+ if(addr >= proc->sz || addr+4 > proc->sz)
return -1;
*ip = *(int*)(addr);
return 0;
}
-// Fetch the nul-terminated string at addr from process p.
+// Fetch the nul-terminated string at addr from the current process.
// Doesn't actually copy the string - just sets *pp to point at it.
// Returns length of string, not including nul.
int
-fetchstr(struct proc *p, uint addr, char **pp)
+fetchstr(uint addr, char **pp)
{
char *s, *ep;
- if(addr >= p->sz)
+ if(addr >= proc->sz)
return -1;
*pp = (char*)addr;
- ep = (char*)p->sz;
+ ep = (char*)proc->sz;
for(s = *pp; s < ep; s++)
if(*s == 0)
return s - *pp;
@@ -45,7 +45,7 @@ fetchstr(struct proc *p, uint addr, char **pp)
int
argint(int n, int *ip)
{
- return fetchint(proc, proc->tf->esp + 4 + 4*n, ip);
+ return fetchint(proc->tf->esp + 4 + 4*n, ip);
}
// Fetch the nth word-sized system call argument as a pointer
@@ -74,7 +74,7 @@ argstr(int n, char **pp)
int addr;
if(argint(n, &addr) < 0)
return -1;
- return fetchstr(proc, addr, pp);
+ return fetchstr(addr, pp);
}
extern int sys_chdir(void);
diff --git a/sysfile.c b/sysfile.c
index e6d08e8..64f2b33 100644
--- a/sysfile.c
+++ b/sysfile.c
@@ -388,13 +388,13 @@ sys_exec(void)
for(i=0;; i++){
if(i >= NELEM(argv))
return -1;
- if(fetchint(proc, uargv+4*i, (int*)&uarg) < 0)
+ if(fetchint(uargv+4*i, (int*)&uarg) < 0)
return -1;
if(uarg == 0){
argv[i] = 0;
break;
}
- if(fetchstr(proc, uarg, &argv[i]) < 0)
+ if(fetchstr(uarg, &argv[i]) < 0)
return -1;
}
return exec(path, argv);