summaryrefslogtreecommitdiff
path: root/main.c
AgeCommit message (Collapse)AuthorFilesLines
2007-08-22PDF at http://am.lcs.mit.edu/~rsc/xv6.pdfrsc1-61/+21
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-21remove dead codersc1-16/+0
2007-08-21Various cleanup:rsc1-80/+40
- 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-20shuffle fs.c in bottom-up orderrsc1-1/+1
2007-08-14Gcc expects to be able to pick up the returnrsc1-4/+11
address off the stack, so put one there for it. (Bug was hidden by bad segment limits.)
2007-08-10avoid assignments in declarationsrsc1-2/+2
2007-08-08missing voidrsc1-1/+1
2007-08-08more bugsrsc1-3/+3
2007-08-08add DPL_USER constantrsc1-2/+2
2007-08-08set init namersc1-0/+1
2006-09-08formatting nitsrsc1-3/+6
2006-09-08only need a pagersc1-1/+1
2006-09-08use bootstrap processor as specified by MP table. typically 0, but notkaashoek1-5/+7
guaranteed.
2006-09-08some comment changeskaashoek1-2/+2
2006-09-07fix buildrsc1-4/+4
2006-09-07get precedence of <, >, and | rightkaashoek1-1/+1
simplify
2006-09-07run without lapic and ioapic, if they are not presentkaashoek1-2/+5
if no lapic available, use 8253pit for clock now xv6 runs both on qemu (uniprocessor) and bochs (uniprocessor and MP)
2006-09-06fd_* => file_*rsc1-1/+1
2006-09-06standardize various * conventionsrsc1-7/+7
2006-09-06spacing fixes: no tabs, 2-space indents (for rtm)rsc1-1/+1
2006-08-29prune unneeded panics and debug outputrtm1-26/+19
2006-08-29clean up stale error checks and panicsrtm1-4/+0
delete unused functions a few comments
2006-08-16proc[0] can sleep(), at least after it gets to main00()rtm1-18/+43
proc[0] calls iget(rootdev, 1) before forking init
2006-08-15no more proc[] entry per cpu for idle looprtm1-12/+11
each cpu[] has its own gdt and tss no per-proc gdt or tss, re-write cpu's in scheduler (you win, cliff) main0() switches to cpu[0].mpstack
2006-08-15oopskaashoek1-1/+1
2006-08-15commented out code for cwdkaashoek1-2/+5
2006-08-13link()rtm1-6/+0
2006-08-11init creates console, opens 0/1/2, runs shrtm1-4/+4
sh accepts 0-argument commands (like userfs) reads from console
2006-08-10interrupts could be recursive since lapic_eoi() called before rtirtm1-5/+13
so fast interrupts overflow the kernel stack fix: cli() before lapic_eoi()
2006-08-10low-level keyboard input (not hooked up to /dev yet)rtm1-1/+1
fix acquire() to cli() *before* incrementing nlock make T_SYSCALL a trap gate, not an interrupt gate sadly, various crashes if you hold down a keyboard key...
2006-08-09devswkaashoek1-0/+1
checkpoint: write(fd,"hello\n",6) where fd is a console dev almost works
2006-08-08fix race in holding() check in acquire()rtm1-12/+23
give cpu1 a TSS and gdt for when it enters scheduler() and a pseudo proc[] entry for each cpu cpu0 waits for each other cpu to start up read() for files
2006-08-04better interrupt plan---this one appears to workkaashoek1-0/+1
ioapic
2006-07-29open()rtm1-0/+2
2006-07-27primitive execrtm1-0/+1
2006-07-20uint32_t -> uint &crtm1-7/+7
2006-07-17standarize on unix-like lowercase struct namesrsc1-6/+6
2006-07-17add uint and standardize on typedefs instead of unsignedrsc1-3/+3
2006-07-16various little fixes that should have been in earlier checkinsrsc1-2/+0
2006-07-16fix main return typersc1-3/+6
2006-07-16Keep interrupts disabled during startup.rsc1-16/+27
2006-07-16standardize on not using foo_ prefix in struct foorsc1-15/+15
2006-07-16Attempt to clean up newproc somewhat.rsc1-2/+2
Also remove all calls to memcpy in favor of memmove, which has defined semantics when the ranges overlap. The fact that memcpy was working in console.c to scroll the screen is not guaranteed by all implementations.
2006-07-16New scheduler.rsc1-5/+5
Removed cli and sti stack in favor of tracking number of locks held on each CPU and explicit conditionals in spinlock.c.
2006-07-15silence load_icode signedness warningrsc1-3/+3
2006-07-15no more recursive locksrtm1-2/+2
wakeup1() assumes you hold proc_table_lock sleep(chan, lock) provides atomic sleep-and-release to wait for condition ugly code in swtch/scheduler to implement new sleep fix lots of bugs in pipes, wait, and exit fix bugs if timer interrupt goes off in schedule() console locks per line, not per byte
2006-07-12extract lapic code from mp.ckaashoek1-1/+4
2006-07-12i think my cmpxchg use was wrong in acquirertm1-1/+12
nesting cli/sti: release shouldn't always enable interrupts separate setup of lapic from starting of other cpus, so cpu() works earlier flag to disable locking in console output make locks work even when curproc==0 (still crashes in clock interrupt)
2006-07-12no more big kernel lockrtm1-6/+6
succeeds at usertests.c pipe test
2006-07-11give each cpu its own clock, so that preemption works on cpu 1rtm1-0/+2