Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
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
|
|
|
|
- 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].
|
|
|
|
address off the stack, so put one there for it.
(Bug was hidden by bad segment limits.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
guaranteed.
|
|
|
|
|
|
simplify
|
|
if no lapic available, use 8253pit for clock
now xv6 runs both on qemu (uniprocessor) and bochs (uniprocessor and MP)
|
|
|
|
|
|
|
|
|
|
delete unused functions
a few comments
|
|
proc[0] calls iget(rootdev, 1) before forking init
|
|
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
|
|
|
|
|
|
|
|
sh accepts 0-argument commands (like userfs)
reads from console
|
|
so fast interrupts overflow the kernel stack
fix: cli() before lapic_eoi()
|
|
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...
|
|
checkpoint: write(fd,"hello\n",6) where fd is a console dev almost works
|
|
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
|
|
ioapic
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
Removed cli and sti stack in favor of tracking
number of locks held on each CPU and explicit
conditionals in spinlock.c.
|
|
|
|
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
|
|
|
|
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)
|
|
succeeds at usertests.c pipe test
|