Skip to content
Snippets Groups Projects
Commit 4587b358 authored by Robert Morris's avatar Robert Morris
Browse files

exec questions

parent faad047a
No related branches found
No related tags found
No related merge requests found
......@@ -48,6 +48,9 @@ exec(char *path, char **argv)
}
iunlockput(ip);
// XXX rtm: what about the BSS? shouldn't there be some
// bzero()ing here?
// Allocate and initialize stack at sz
sz = spbottom = PGROUNDUP(sz);
if(!(sz = allocuvm(pgdir, sz, sz + PGSIZE)))
......@@ -62,6 +65,9 @@ exec(char *path, char **argv)
sp = sz;
argp = sz - arglen - 4*(argc+1);
// XXX rtm: does the following code work if the
// arguments &c do not fit in one page?
// Copy argv strings and pointers to stack.
*(uint*)(mem+argp-spbottom + 4*argc) = 0; // argv[argc]
for(i=argc-1; i>=0; i--){
......
......@@ -17,12 +17,12 @@ struct {
struct run *freelist;
} kmem;
extern char end[]; // first address after kernel loaded from ELF file
// Initialize free list of physical pages.
void
kinit(void)
{
extern char end[];
initlock(&kmem.lock, "kmem");
char *p = (char*)PGROUNDUP((uint)end);
for( ; p + PGSIZE - 1 < (char*) PHYSTOP; p += PGSIZE)
......@@ -39,7 +39,7 @@ kfree(char *v)
{
struct run *r;
if(((uint) v) % PGSIZE || (uint)v < 1024*1024 || (uint)v >= PHYSTOP)
if(((uint) v) % PGSIZE || v < end || (uint)v >= PHYSTOP)
panic("kfree");
// Fill with junk to catch dangling refs.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment