Commit graph

140 commits

Author SHA1 Message Date
Robert Morris 71453f72f2 a start at concurrent FS system calls 2014-08-27 17:15:30 -04:00
Robert Morris 2c56547272 every iput() and namei() must be inside a transaction 2014-08-04 13:06:48 -04:00
Robert Morris 020c8e2384 use acquire/release to force order for pid=np->pid;np->state=RUNNING
for bug reported by symingz@gmail.com and cs1100254@cse.iitd.ernet.in
2014-08-04 06:13:49 -04:00
Frans Kaashoek 4ce832ddd2 Remove unused argument to setupkvm (thanks to Peter Froehlich) 2012-08-22 20:19:37 -04:00
Robert Morris 5a23692444 fix usertests to correctly test what happens when you call
exec() with arguments that don't fit on a single page.
2011-09-01 12:02:49 -04:00
Frans Kaashoek 194f8bf739 A comment 2011-08-22 20:07:18 -04:00
Frans Kaashoek d10d324e79 Remove sys_init syscall
Invoke initlog from forkret on first user process
2011-08-22 20:05:15 -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 faad047ab2 change some comments, maybe more informative
delete most comments from bootother.S (since copy of bootasm.S)
ksegment() -> seginit()
move more stuff from main() to mainc()
2010-09-13 15:34:44 -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 f53e6110be Simplify inituvm and userinit by assuming initcode fits on a page 2010-09-02 15:42:25 -04:00
Austin Clements c7c21467c3 Oops. Broke the build when I rearranged proc.c 2010-09-02 14:30:06 -04:00
Austin Clements d8828817d7 Rearrange proc.h and proc.c to get our action-packed spreads back (mostly). They also make sense in this order, so it's not just for page layout. 2010-09-02 04:15:17 -04:00
Austin Clements b0751a3e9b Space police 2010-09-01 00:41:25 -04:00
Austin Clements 7472b2b451 Fix too-long lines 2010-08-31 16:26:08 -04:00
Robert Morris 7d7dc9331b kalloc/kfree now only a page at a time
do not keep sorted contiguous free list
2010-08-31 12:54:47 -04:00
Robert Morris 83d2db91f7 allow sbrk(-x) to de-allocate user memory 2010-08-10 17:08:41 -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
Robert Morris c99599784e remove some unused vm #defines
fix corner cases with alignment when mapping kernel ELF file
2010-08-05 16:00:59 -04:00
Frans Kaashoek 30f5bf0548 some cleanup 2010-07-25 20:30:21 -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
Frans Kaashoek ccd980bedf nit in comment 2009-09-20 20:19:58 -04:00
Russ Cox c9ee77b8a2 formatting tweaks 2009-09-03 00:46:15 -07:00
Russ Cox d26025d124 can set just %gs now. 2009-09-02 10:09:34 -07:00
Russ Cox 7e0cc8e36e another attempt at cpu-local variables.
this time do it ourselves instead of piggybacking on TLS.
add -fno-pic to Makefile; pic code breaks our fake TLS.
2009-09-02 10:07:59 -07:00
Russ Cox f8ab2079cd fix TLS again;
still not quite but a lot better.
2009-09-02 07:59:24 -07:00
Russ Cox 57ae146362 Fix TLS for PIC systems 2009-09-02 07:41:08 -07: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 00e571155c more doc tweaks 2009-07-12 18:33:37 -07:00
Russ Cox 2c5f7aba38 initproc, usegment, swtch tweaks 2009-07-11 19:28:29 -07:00
rsc 27ff8f0e6f compile fixes 2009-05-31 05:13:51 +00:00
rsc 34295f461a group locks into structs they protect.
few naming nits.
2009-05-31 05:12:21 +00:00
rsc 7b644318dd clean up %fs %gs use 2009-05-31 01:12:08 +00:00
rsc 215738336a move fork into proc.c 2009-05-31 00:38:51 +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 2157576107 be consistent: no underscores in function names 2009-03-08 22:07:13 +00:00
kolya c100d9ee2d cleaner swtch.S 2008-10-15 05:14:10 +00:00
kolya 228e500a0c save cpus.intena in sched(), so we get the right EFLAGS.IF value once a
timer-preempted kernel thread resumes execution in trap() after yield().
otherwise the kernel could get an arbitrary number of nested timer intrs.
2008-10-15 05:01:39 +00:00
rtm 4651d04ad1 omit *.d from tar file 2008-09-11 10:20:40 +00:00
rtm ee3f75f229 simplify growproc 2008-08-28 17:57:47 +00:00
rtm 98754d687e avoid a bug w/ exit() 2008-08-28 00:53:24 +00:00
rtm fd6b029401 proc_wait -> wait 2007-10-20 18:25:38 +00:00
rsc ab08960f64 Final word on the locking fiasco?
Change pushcli / popcli so that they can never turn on
interrupts unexpectedly.  That is, if interrupts are on,
then pushcli(); popcli(); turns them off and back on, but
if they are off to begin with, then pushcli(); popcli(); is
a no-op.

I think our fundamental mistake was having a primitive
(release and then popcli nee spllo) that could turn
interrupts on at unexpected moments instead of being
explicit about when we want to start allowing interrupts.

With the new semantics, all the manual fiddling of ncli
to force interrupts off in certain sections goes away.
In return, we must explicitly mark the places where
we want to enable interrupts unconditionally, by calling sti().
There is only one: inside the scheduler loop.
2007-09-27 21:25:37 +00:00
rsc c95bde8163 yank out stack overflow checking ugliness 2007-09-27 20:38:53 +00:00
rsc 4f74de0edc okay, that was long enough - revert 2007-09-27 20:32:45 +00:00