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