One step closer to argv/envp/auxv on the stack
authorKevin Klues <klueska@cs.berkeley.edu>
Sun, 12 Jul 2015 19:31:10 +0000 (12:31 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 14 Jul 2015 14:33:16 +0000 (10:33 -0400)
commit9cef7582fa555f4a8ecb38147c4bab2535910007
treebc03e24c5972846f30f5b3758f2db6f8acacc3c0
parent766529fabeb75575affe6a05a9e4db1ce089442e
One step closer to argv/envp/auxv on the stack

I've now rearranged load_elf to call out to a function called
populate_stack(), which will fill in the argc, envp, and auxv
information in the appropriate places on the stack. For now it still
fills in procinfo, but I've rewritten how this is done so that it makes
memcpy_to_user() calls to (UINFO)->argp and (UINFO)->argbuf instead of
writing to the kernel mapping for p->procinfo->argp and
p->procinfo->argbuf. This mimics how I plan to copy data onto the user
stack in a subsequent commit.

To make this work, I've had to temporarily modify the memcpy_to_user()
call to accept writes to memory that is mapped as 'user-read-only'. This
was necessary since procinfo is mapped in in this way.  Once I start
writing to the stack, this will not be an issue, and this change can be
reverted.
kern/src/elf.c
kern/src/umem.c