Commit graph

34 commits

Author SHA1 Message Date
Frans Kaashoek
4ce832ddd2 Remove unused argument to setupkvm (thanks to Peter Froehlich) 2012-08-22 20:19:37 -04:00
Austin Clements
549c62cc1c I can't do math; fix bug introduced in 5a9761 2011-09-03 10:21:51 -04:00
Austin Clements
5a97613bab Fit exec on a page. Again 2011-09-02 15:27:41 -04:00
Austin Clements
2eb214c9db clear_pte_u -> clearpteu 2011-09-02 14:37:04 -04:00
Robert Morris
371ab7fa96 inaccessible page under the user stack page, to help exec deal w/ too-large args 2011-09-01 13:25:34 -04:00
Frans Kaashoek
fa81545f1c Make elf proghdr fields match what objdump prints 2011-08-17 20:23:36 -04:00
Frans Kaashoek
66ba8079c7 Use static page table for boot, mapping first 4Mbyte; no more segment trick
Allocate proper kernel page table immediately in main using boot allocator
Remove pginit
Simplify address space layout a tiny bit
More to come (e.g., superpages to simplify static table)
2011-08-09 21:37:35 -04:00
Frans Kaashoek
9aa0337dc1 Map kernel high
Very important to give qemu memory through PHYSTOP :(
2011-07-29 07:31:27 -04:00
Russ Cox
cf4b1ad90b xv6: formatting, cleanup, rev5 (take 2) 2011-02-19 21:17:55 -05:00
Russ Cox
1a81e38b17 make new code like old code
Variable declarations at top of function,
separate from initialization.

Use == 0 instead of ! for checking pointers.

Consistent spacing around {, *, casts.

Declare 0-parameter functions as (void) not ().

Integer valued functions return -1 on failure, 0 on success.
2011-01-11 13:01:13 -05:00
Robert Morris
2ea6c764c3 even more fabulous exec 2010-09-29 14:12:26 -04:00
Robert Morris
06feabecee check exec() arg length
fix double iunlockput
2010-09-27 16:17:57 -04:00
Robert Morris
4655d42e3b copyout() copies data to a va in a pagetable, for exec() &c
usertest that passes too many arguments, break exec
2010-09-27 16:14:33 -04:00
Robert Morris
05d66b0629 my comment is wrong, exec handles BSS fine 2010-09-19 13:47:52 -04:00
Robert Morris
4587b35847 exec questions 2010-09-19 07:18:42 -04:00
Austin Clements
79cd8b3eed Simplify allocuvm/deallocuvm to operate in a contiguous memory model. This makes their interface match up better with proc->sz and also simplifies the callers (it even gets the main body of exec on one page). 2010-09-02 18:28:36 -04:00
Austin Clements
b1d41d6788 Remove the stack guard page. Processes are now contiguous from 0 to proc->sz, which means our syscall argument validation is correct. Add a pointer validation test and remove the stack test, which tested for the guard page. 2010-09-01 16:46:37 -04:00
Austin Clements
5efca9054f Tab police 2010-09-01 00:32:27 -04:00
Robert Morris
c4cc10da7e fix corner cases in exec of ELF
put an invalid page below the stack
have fork() handle invalid pages
2010-08-06 11:12:18 -04:00
Frans Kaashoek
af03ab142d a few nits
passes all tests on two-processor smp
2010-07-23 12:52:50 -04:00
Frans Kaashoek
4714c20521 Checkpoint page-table version for SMP
Includes code for TLB shootdown (which actually seems unnecessary for xv6)
2010-07-23 07:41:13 -04:00
Frans Kaashoek
40889627ba Initial version of single-cpu xv6 with page tables 2010-07-02 14:51:53 -04:00
Russ Cox
48755214c9 assorted fixes:
* rename c/cp to cpu/proc
 * rename cpu.context to cpu.scheduler
 * fix some comments
 * formatting for printout
2009-08-30 23:02:08 -07:00
Russ Cox
0aef891495 shuffle and tweak for formatting.
pdf has very good page breaks now.
would be a good copy for fall 2009.
2009-08-08 01:07:30 -07:00
Russ Cox
b3bebfce8a exec tweaks 2009-07-13 09:34:45 -07:00
rsc
90bab90832 exec sanity check 2009-05-31 02:11:27 +00:00
rsc
19333efb9e Some proc cleanup, moving some of copyproc into allocproc.
Also, an experiment: use "thread-local" storage for c and cp
instead of the #define macro for curproc[cpu()].
2009-05-31 00:28:45 +00:00
rsc
71d5bf4d08 oops - broke arg counting 2007-08-30 18:19:52 +00:00
rsc
c1bfbfa2f7 oops 2007-08-28 02:39:40 +00:00
rsc
558ab49f13 delete unnecessary #include lines 2007-08-27 23:26:33 +00:00
rsc
629c1fe743 Edit exec.
Do not commit to new memory image until
nothing can go wrong, avoiding bad2 case.

Be sure to allocate enough stack space for argv.

Load executable before initializing stack, to
keep ELF loops together.

Make argv loop clearer.
2007-08-27 15:17:40 +00:00
rsc
07090dd705 Remove struct uinode.
Remove type arg to mknod (assume T_DEV).
2007-08-24 20:54:23 +00:00
rsc
eaea18cb9c PDF at http://am.lcs.mit.edu/~rsc/xv6.pdf
Various changes made while offline.

 + bwrite sector argument is redundant; use b->sector.
 + reformatting of files for nicer PDF page breaks
 + distinguish between locked, unlocked inodes in type signatures
 + change FD_FILE to FD_INODE
 + move userinit (nee proc0init) to proc.c
 + move ROOTDEV to param.h
 + always parenthesize sizeof argument
2007-08-22 06:01:32 +00:00
rsc
f32f3638f4 Various cleanup:
- Got rid of dummy proc[0].  Now proc[0] is init.
 - Added initcode.S to exec /init, so that /init is
   just a regular binary.
 - Moved exec out of sysfile to exec.c
 - Moved code dealing with fs guts (like struct inode)
   from sysfile.c to fs.c.  Code dealing with system call
   arguments stays in sysfile.c
 - Refactored directory routines in fs.c; should be simpler.
 - Changed iget to return *unlocked* inode structure.
   This solves the lookup-then-use race in namei
   without introducing deadlocks.
   It also enabled getting rid of the dummy proc[0].
2007-08-21 19:22:08 +00:00