- move log into metadata part of disk, so that marking
that the log's blocks are in use falls out for free
- superblock describes the whole disk (sizes and offets)
- sizes and offsets are computed in one place (mkfs) and
the rest of the code refers to the superblock for these values,
instead of recomputing them.
instead of 1. ideintr() should wait for nsector_per_block interrupts before
waking up the reader; now it wakes up the reader after 1 interrupt, which
apparently means that the first sector is available of the command instead of all.
For now keep BSIZE to 512.
that they can be different. Clean up mkfs, simplifying specifying fs parameters,
remove some redundancy between fs and mkfs, and fix disk layout bugs. Call blocks
in the file system blocks instead of sectors. Passes usertests for different
block sizes.
Currently, grep read()s into a buffer and then uses the buffer as a
string. Since there's no NUL-terminator, this can cause it to falsely
identify line breaks and matches from leftover data on earlier lines
and, if a line fills up the entire buffer, to read past the end of the
buffer.
Fix this by NUL-terminating any data returned by read().
Thanks to Keiichi Watanabe for the report.
Commit 9aa0337d introduced a linker script for linking the kernel image,
but only changed the kernel target to use it. kernelmemfs was still
using the old linker command line arguments, which weren't sufficient.
the day of reckoning has come for the debug port "Shutdown" hack.
instead of mucking with ACPI or using a new hack, the student will now write
sys_date() using the cmosgetdate() helper.
Search for an addr2line that supports elf32-i386. Don't print the
path of addr2line as a side-effect of which. Don't uselessly pipe
"grep '^ '" to addr2line's stdin. Enable as many pretty-printing and
otherwise helpful options as possible (this makes the output *much*
more pleasant on modern addr2lines).
Previously, these were inconsistent: they used their struct proc
argument for bounds checking, but always copied the argument from the
current address space (and hence the current process). Drop the
struct proc argument and always use the current proc.
Suggested by Carmi Merimovich.