Commit graph

531 commits

Author SHA1 Message Date
rsc 2157576107 be consistent: no underscores in function names 2009-03-08 22:07:13 +00:00
rsc b7f653dc49 xv6: boot loader adjustments
do Bochs breakpoint and spin in bootasm.S.
not needed in bootmain too.
fix readseg bug (rounding of va).
zero segments when memsz > filesz.
no need to clear BSS in kernel main.
make bootother.S like bootasm.S
2009-03-08 21:41:30 +00:00
rsc 8220135362 xv6: use stosb for memset 2009-03-08 21:38:30 +00:00
rsc c396d065d3 xv6/x86.h: add stosb, fix bugs in insl/outsl (rep not repne) 2009-03-08 21:27:57 +00:00
rsc 4003e9bed8 xv6/x86.h: inline assembly cleanup 2009-03-08 20:56:38 +00:00
rtm 8eb20827c2 Explain why itrunc() is OK w.r.t. crashes. 2008-10-20 18:05:48 +00:00
kolya 15a2693637 try harder to get directory refcounts right 2008-10-17 12:42:13 +00:00
kolya f3e87bc838 make mkdir crash-safer, as noticed by many students on midterm 2008-10-16 15:18:49 +00:00
kolya e1626709d6 free the indirect block 2008-10-16 15:00:23 +00:00
kolya e670a48358 as rtm noticed, avoid doubly-freeing pipe page 2008-10-15 17:42:56 +00:00
kolya deca9fef83 indent 2008-10-15 05:15:32 +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
kolya 15ce79de14 check cp->killed before returning to user from a timer interrupt 2008-10-15 04:57:02 +00:00
kolya 00ce31c09c update .cvsignore 2008-10-15 04:54:24 +00:00
kolya 289bbef733 minor cleanup 2008-10-12 20:19:16 +00:00
kolya f73b81205e minor cleanup with STUB macro 2008-10-12 19:54:11 +00:00
kolya c780dbf967 include explicitly initialized globals (int x = 0;) in cross-refs,
also thanks to greg price.
2008-10-12 18:45:30 +00:00
kolya 6186836d28 fix: when two names only differed in case, crossrefs only included one of them.
thanks to greg price.
2008-10-12 18:33:14 +00:00
rtm 2ce40d7088 be clear what the root i-number is 2008-10-08 18:57:13 +00:00
rtm be38c8413e document lock->locked=0 vs xchg(&lock->locked, 0) 2008-09-28 10:53:54 +00:00
kolya 0159c8bb94 trap 9 does not push ec: fix from Greg Price <price@mit.edu> 2008-09-24 18:20:56 +00:00
kolya c7317d4dc7 always save and restore %fs, %gs to ensure old segment entries are never
accessible to user from the hidden CPU segment registers.
2008-09-24 01:48:31 +00:00
rtm adcd16c3f7 restore std toolprefix 2008-09-11 10:22:01 +00:00
rtm 4651d04ad1 omit *.d from tar file 2008-09-11 10:20:40 +00:00
kaashoek e9ae6f5cbe add copyright notice 2008-09-09 11:42:44 +00:00
kolya f68317533e make bochsrc work for bochs 2.2.6 2008-09-03 14:10:47 +00:00
kolya 35a6cf84ec make pdf, ps, tarball 2008-09-03 14:05:52 +00:00
kaashoek e87dca5cc5 nits in index.txt
add slides for shell, x86 intro, x86 virtual memory  (deleted JOS from slides)
2008-09-03 12:29:44 +00:00
rsc f53494c28e DO NOT MAIL: xv6 web pages 2008-09-03 04:50:04 +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 56082468ea the old explanation of AP startup might have been correct, but
I understand this one.
2008-08-28 00:52:05 +00:00
kolya 02cc595f28 clean up circular buffers, so pipe can queue 512 bytes rather than 511 2008-08-22 00:26:22 +00:00
kolya 5c5470a2fa fix obvious printf nits after reading through code 2008-08-21 23:24:02 +00:00
rsc 1808b2f1b3 now rev2 2008-08-20 18:00:35 +00:00
rsc 150785a1fd add nice font 2008-08-20 18:00:24 +00:00
rsc 9b62657ecd formatting updates 2008-08-20 18:00:13 +00:00
rsc 5b7f8cbe7c bochs faster 2008-08-20 17:59:29 +00:00
rsc 174729fc55 xv6: latest (as of January 2008) 2008-08-20 17:46:32 +00:00
rsc eadbd55af2 oops - wrong bit (vic zandy) 2007-12-20 18:27:07 +00:00
rsc c2258bf4d2 fork minibug 2007-11-28 20:47:22 +00:00
rsc 4f06ae0d42 More complete lapic startup (thanks Silas) 2007-11-28 20:47:10 +00:00
rsc a6c4711a38 bda[0xE] is a 16-bit segment number,
not a real address.  So shift 4.

Reported by Silas.

Jim McKie says this code only matters
on ancient EISA MP systems.
2007-11-28 20:17:04 +00:00
rtm fd6b029401 proc_wait -> wait 2007-10-20 18:25:38 +00:00
rsc 949352af66 Model verifying that wakeup really
can be called after release without
causing deadlock.
2007-10-12 04:21:04 +00:00
rsc 943fd378a1 Incorporate new understanding of/with Intel SMP spec.
Dropped cmpxchg in favor of xchg, to match lecture notes.

Use xchg to release lock, for future protection and to
keep gcc from acting clever.
2007-10-01 20:43:15 +00:00
rsc 9fd9f80431 Re: why cpuid() in locking code?
rtm wrote:
> Why does acquire() call cpuid()? Why does release() call cpuid()?

The cpuid in acquire is redundant with the cmpxchg, as you said.
I have removed the cpuid from acquire.

The cpuid in release is actually doing something important,
but not on the hardware.  It keeps gcc from reordering the
lock->locked assignment above the other two during optimization.
(Not that current gcc -O2 would choose to do that, but it is allowed to.)
I have replaced the cpuid in release with a "gcc barrier" that
keeps gcc from moving things around but has no hardware effect.

On a related note, I don't think the cpuid in mpmain is necessary,
for the same reason that the cpuid wasn't needed in release.

As to the question of whether

  acquire();
  x = protected;
  release();

might read protected after release(), I still haven't convinced
myself whether it can.  I'll put the cpuid back into release if
we determine that it can.

Russ
2007-09-30 14:30:04 +00:00
rsc c840f3ecdc tricks 2007-09-30 14:20:47 +00:00
rsc af7366c945 interrupts during system calls
"It just works."
2007-09-27 21:37:45 +00:00