You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
Michael Lee 83a632b1b2
Fixing provisioning of gdbinit
9 years ago
.cvsignore update .cvsignore 15 years ago
.dir-locals.el Setting indent-tabs-mode nil everywhere is dangerous 12 years ago
.gdbinit.tmpl Use the symbol file 14 years ago
.gitignore Ignoring .vagrant directory 9 years ago
BUGS sh 16 years ago
LICENSE Add MIT license file; update xv6-rev2.tar.gz with LICENSE. 14 years ago
Makefile Adding Vagrantfile 9 years ago
Notes nit in console interrupts 17 years ago
README nits 11 years ago
TRICKS more doc tweaks 14 years ago
Vagrantfile Adding Vagrantfile 9 years ago
asm.h add some comments 13 years ago
bigtest.c Readying for CS 450 xv6 assignment 10 years ago
bio.c don't let dirty blocks be evicted from cache! 12 years ago
bootasm.S comment nits 12 years ago
bootmain.c Make the ELF entry point a physical address 12 years ago
buf.h Revert "Introduce and use sleeplocks instead of BUSY flags" 12 years ago
cat.c more consistent spacing 16 years ago
console.c Remove unused 'state' variable that broke the build in recent gcc's 12 years ago
cuth delete unnecessary #include lines 16 years ago
defs.h Merge branch 'master' of git+ssh://amsterdam.csail.mit.edu/home/am0/6.828/xv6 11 years ago
dot-bochsrc make bochsrc work for bochs 2.2.6 15 years ago
echo.c Remove puts in favor of printf. 16 years ago
elf.h Make elf proghdr fields match what objdump prints 12 years ago
entry.S more regular kmap[] and description 12 years ago
entryother.S Fix stale comments in entryother.S 12 years ago
exec.c Remove unused argument to setupkvm (thanks to Peter Froehlich) 11 years ago
fcntl.h nit 16 years ago
file.c don't let dirty blocks be evicted from cache! 12 years ago
file.h clarify some FS comments 12 years ago
forktest.c Initial version of single-cpu xv6 with page tables 13 years ago
fs.c more FS comment clarification 12 years ago
fs.h clarify some FS comments 12 years ago
gdbutil GDB utilities 14 years ago
getcount.c Readying for CS 450 xv6 assignment 10 years ago
grep.c add grep; add lost echo 16 years ago
ide.c make the book happy 11 years ago
init.c group locks into structs they protect. 14 years ago
initcode.S Remove sys_init syscall 12 years ago
ioapic.c trap cleanup 14 years ago
kalloc.c eliminate enter_alloc -- use kalloc for everything 12 years ago
kbd.c be consistent: no underscores in function names 14 years ago
kbd.h formatting; split kbd constants into kbd.h 16 years ago
kernel.ld Nuke data.S, since we do have a custom linker script. 12 years ago
kill.c tab police 14 years ago
lapic.c Remove unused argument from lapicinit (thanks to Peter Froehlich) 11 years ago
ln.c add ln 16 years ago
log.c don't let dirty blocks be evicted from cache! 12 years ago
ls.c Remove puts in favor of printf. 16 years ago
main.c Remove unused argument from lapicinit (thanks to Peter Froehlich) 11 years ago
memide.c missing file memide.c 12 years ago
memlayout.h more regular kmap[] and description 12 years ago
mkdir.c more consistent spacing 16 years ago
mkfs.c Readying for CS 450 xv6 assignment 10 years ago
mmu.h Correct a security bug in copyuvm() 10 years ago
mp.c Avoid "boot" in xv6 12 years ago
mp.h Simplify MP hardware code. 16 years ago
param.h log write() data 12 years ago
picirq.c Get rid of the blank page in picirq.c. It misaligs things now. 13 years ago
pipe.c Revert "Introduce and use sleeplocks instead of BUSY flags" 12 years ago
pr.pl remove //DOC in the right place 14 years ago
printf.c spaces around else for rtm 16 years ago
printpcs Various fixes and improvements to printpcs 11 years ago
proc.c Remove unused argument to setupkvm (thanks to Peter Froehlich) 11 years ago
proc.h junk 11 years ago
rm.c more consistent spacing 16 years ago
runoff Fetch nice font from font branch, if possible 12 years ago
runoff.list Remove data.S from runoff, too 12 years ago
runoff.spec Note about the meaning of sheet1 in runoff.spec 12 years ago
runoff1 xv6: formatting, cleanup, rev5 (take 2) 12 years ago
sh.c move jkstack to main.c 13 years ago
show1 PDF at http://am.lcs.mit.edu/~rsc/xv6.pdf 16 years ago
sign.pl spacing fixes: no tabs, 2-space indents (for rtm) 17 years ago
sleep1.p Model verifying that wakeup really 16 years ago
spinlock.c Revert "Introduce and use sleeplocks instead of BUSY flags" 12 years ago
spinlock.h Revert "Introduce and use sleeplocks instead of BUSY flags" 12 years ago
spinp Model verifying that wakeup really 16 years ago
stat.h junk 11 years ago
stressfs.c Update stressfs to trigger race now the logging code serializes writes 12 years ago
string.c Use stosl in memset; makes boot time bearable 12 years ago
swtch.S move jkstack to main.c 13 years ago
symlink.patch symlink implementation 16 years ago
syscall.c Remove left-over from some logging plan making complete syscalls atomic 11 years ago
syscall.h Remove left-over from some logging plan making complete syscalls atomic 11 years ago
sysfile.c Make fetchint and fetchstr use proc instead of taking a struct proc 11 years ago
sysproc.c Avoid "boot" in xv6 12 years ago
timer.c shuffle and tweak for formatting. 14 years ago
toc.ftr Update index example in TOC footer 12 years ago
toc.hdr nits 16 years ago
trap.c Map kernel high 12 years ago
trapasm.S One definition of several macros and constants 12 years ago
traps.h kill TLB shoot down code 13 years ago
types.h some cleanup 13 years ago
uart.c shuffle and tweak for formatting. 14 years ago
ulib.c make new code like old code 12 years ago
umalloc.c make new code like old code 12 years ago
user.h make new code like old code 12 years ago
usertests.c Fix compile error on newer gcc's 12 years ago
usys.S uptime() sys call for benchmarking 13 years ago
vagrantprov.sh Fixing provisioning of gdbinit 9 years ago
vectors.pl sync with c; .text is implied 14 years ago
vm.c Correct a security bug in copyuvm() 10 years ago
wc.c junk 11 years ago
x86.h Remove unused x86.h definitions 12 years ago
zombie.c delete unnecessary #include lines 16 years ago

README

xv6 is a re-implementation of Dennis Ritchie's and Ken Thompson's Unix
Version 6 (v6).  xv6 loosely follows the structure and style of v6,
but is implemented for a modern x86-based multiprocessor using ANSI C.

ACKNOWLEDGMENTS

xv6 is inspired by John Lions's Commentary on UNIX 6th Edition (Peer
to Peer Communications; ISBN: 1-57398-013-7; 1st edition (June 14,
2000)). See also http://pdos.csail.mit.edu/6.828/2012/v6.html, which
provides pointers to on-line resources for v6.

xv6 borrows code from the following sources:
    JOS (asm.h, elf.h, mmu.h, bootasm.S, ide.c, console.c, and others)
    Plan 9 (entryother.S, mp.h, mp.c, lapic.c)
    FreeBSD (ioapic.c)
    NetBSD (console.c)

The following people have made contributions:
    Russ Cox (context switching, locking)
    Cliff Frey (MP)
    Xiao Yu (MP)
    Nickolai Zeldovich
    Austin Clements

In addition, we are grateful for the patches contributed by Greg
Price, Yandong Mao, and Hitoshi Mitake.

The code in the files that constitute xv6 is
Copyright 2006-2012 Frans Kaashoek, Robert Morris, and Russ Cox.

ERROR REPORTS

If you spot errors or have suggestions for improvement, please send
email to Frans Kaashoek and Robert Morris (kaashoek,rtm@csail.mit.edu). 

BUILDING AND RUNNING XV6

To build xv6 on an x86 ELF machine (like Linux or FreeBSD), run "make".
On non-x86 or non-ELF machines (like OS X, even on x86), you will
need to install a cross-compiler gcc suite capable of producing x86 ELF
binaries.  See http://pdos.csail.mit.edu/6.828/2012/tools.html.
Then run "make TOOLPREFIX=i386-jos-elf-".

To run xv6, you can use the Bochs or QEMU PC simulators. Bochs makes
debugging easier, but QEMU is much faster. To run in Bochs, run "make
bochs" and then type "c" at the bochs prompt. To run in QEMU, run
"make qemu".

To create a typeset version of the code, run "make xv6.pdf".  This
requires the "mpage" utility.  See http://www.mesa.nl/pub/mpage/.