OS/161 was written by David A. Holland, with contributions from Amos Blackman Alexandra Fedorova Ada T. Lim Georgi Matev Jay Moorthi Geoffrey Werner-Allen Additional small patches and bug reports have been contributed by various other people, all of whom are (hopefully) listed below. ------------------------------------------------------------ OS/161 2.0.3 released 20160124 ------------------------------ 20170124 dholland in base - Remove obsolete, redundant, or not useful test programs: guzzle (same as hog) kitchen (equivalent to multiexec -n 4 sink) sink (same as conman) sty (equivalent to multiexec -n 6 hog) quinthuge (offers little over triplehuge, can be done with multiexec) quintmat, quintsort (ditto) 20170118 dholland in base - Make -g -Og the flags when "debug" is enabled in a kernel config (which it is in the non-OPT ones) and add an additional kernel config verb "debugonly" to get just -g in case that becomes necessary. This should significantly improve the output code quality from gcc without compromising debugging. (However, gcc being gcc, it also sometimes leads to additional spurious warnings that don't occur with either -g or -O2.) 20170118 dholland in base - Add a MI mainbus_debugger() function that goes through the right MD paths to trigger the debugger hook in the ltrace device. Also add a menu function "debug" to trigger it. 20170118 dholland in base - Add some bits to forktest to try to catch the case where the fork child returns from the next system call instead of from fork. (Which is a moderately common bug, caused by races copying the trapframe information in the kernel.) 20170117 dholland in base - Add a menu command "deadlock" to intentionally deadlock. 20170117 dholland in base, from Sam Fishman - Fix parallelvm -w so that if one of the forks fails the whole thing doesn't wedge. 20170117 dholland in base, reported by Sam Fishman - Don't do semfs I/O from NULL, or from/to insufficiently sized buffers. Like the 20150615 change, except covering the rest of the tests that use the semaphores that were doing it wrong: multiexec, parallelvm, and schedpong. 20170117 dholland in base, from Sam Fishman - Add assembler directives to exception-mips1.S that tell gdb how to read trap frames correctly. Garbage-collect old stuff left over from making it work with a (much) older version of gdb a long time back. This also usually makes it possible to trace back through a syscall into a userlevel process; include a gdb script with tools for making this useful. 20170117 dholland in base - Merge the deadlock detector into base. It was a success last year. - Mention in the comments that the hangman hooks in locks need to be called atomically. 20170117 dholland in base, reported by Jeffrey Cai, patch from Sam Fishman - Fix off-by-one in tac that makes it skip the first line of files. 20170117 dholland in base, from Sam Fishman - Make badcall's "pipe with unaligned pointer" test clean up after itself if the operation succeeds. Otherwise it leaks fds and that can intefere with other tests. 20170116 dholland in base, reported by Sam Fishman - Don't allow opening an entirely empty pathname to succeed, and don't allow success for this case in badcall either. 20170116 dholland in base, from Sasha Fedorova - Fix write buffer size in filetest. 20160325 dholland in base - Fix macro parenthesis bug in ROUNDUP(). 20160304 dholland in base, from Sam Fishman - Make runtest.py handle spacing in the command strings it's given. 20160216 dholland in base - Fix spacing problems in ls -l output for large files. 20160203 dholland in base - Expand comments attached to cpustacks[]/cputhreads[], prompted by James Mickens. 20160125 dholland in base, from Nikhil Benesch. - Fix stupid argument handling bug in test.py. OS/161 2.0.2 released 20160112 ------------------------------ 20160112 dholland in base - Add vfs_swapon() and vfs_swapoff() functions. These are like vfs_mount() and vfs_unmount(), except for devices to be used for swap. Using these instead of just opening the raw device causes them to be tagged busy, so that accidentally using the same disk for swap and a file system will fail. 20160112 dholland in base - Kill off vm_tlbshootdown_all() and VM_TLBSHOOTDOWN_ALL. While there's nothing wrong per se with doing a TLB shootdown that invalidates all mappings, coalescing multiple pending TLB shootdown requests into a single all-mappings request requires at least MD logic, which the oversimplified scheme here didn't support. In practice TLB shootdown requires synchronization, and the coalescing scheme made it unsafe to put synchronization hooks (that might get dropped) into struct tlbshootdown. Instead leave behind a comment suggesting steps to take if the TLB shootdown queue ever actually overflows in practice, which isn't that likely. 20160112 dholland in base, reported by Sam Fishman - In thread_make_runnable, don't send unidle IPIs to curcpu. 20160111 dholland in base - Provide some simple test automation logic, and install it in $(OSTREE)/testscripts. It uses Python and pexpect, so provide some suitable infrastructure for handling that. 20160111 dholland in base - Have "make clean" in a man directory do nothing instead of failing. 20160107 dholland in base - Don't take vfs_biglock in vnode_check(). It isn't safe (e.g. it can deadlock when paging once you have a VM system) and the things vnode_check() looks at are supposed to be constant fields anyway. If they aren't actually constant because of bugs, reading a stale or even garbage value is not going to hurt more. 20160107 dholland in deadlock-detector - Add a deadlock detector. For now this will be supplied to instructors as a supplementary patch, because it intrudes into the synchronization primitives and affects what students do there. We are planning to try it on our students this coming semester; if that works out well, I'll probably merge it into base. 20160107 dholland in base - In testbin/multiexec, if fork fails partway through, continue with the forks we got. Otherwise the subprocesses we started hang around forever, and there's no way to kill them. 20160106 dholland in all - New format for CHANGES that admits longer descriptions, and that deals better with having many branches and patches. - Merge all the branch CHANGES.* files into the main CHANGES, as having multiple CHANGES files was never desirable. OS/161 2.0.1 released 20150805 ------------------------------ 20150804 dholland in base - Improve multiexec's error reporting. 20150804 dholland in base - Minor fixes to frack check. 20150722 dholland in base - Add assertions to dumbvm to check that sleeping is ok in various contexts where real VM systems typically sleep. 20150722 dholland in base - Initialize curcpu/curthread a bit earlier. 20150721 dholland in base - Remove proc->p_threads[] array. Just count the number of threads in each proc. This is enough to get going on, and it's easy for students to add and synchronize an explicit array of threads themselves if they want it. (It needs a sleeplock; but by that point they'll have those. We don't out of the box though.) 20150713 dholland in base - Make all sfs prints/panics include the volume name. 20150713 dholland in base - Have sfsck print invalid inode type values instead of just saying "invalid". 20150713 dholland in base - Have forktest print ABCD instead of 1234 for clarity. 20150713 dholland in base - Kill off allwchans[]; in practice it isn't useful. 20150710 dholland in base - Split out the pieces of sfs_sync for reusability. 20150706 dholland in base - Add support for new sys161 profiler control registers. 20150625 dholland in base - Fix frack "writetruncseq" workload. 20150605 dholland in base - Have semfs update uio_offset; increases robustness. - Don't do semfs I/O from NULL. It causes consternation. 20150605 dholland in base - Warn that copying threadlist structures breaks them. 20150605 dholland in base - New test: schedpong, an actual scheduler workload, now possible because we have semfs. 20150603 dholland in base - Add example unit tests for the provided semaphores. 20150603 dholland in base - In panic, drop to the debugger before sync, not after. Otherwise, the sync complicates postmortem analysis. Also, for file system panics it often deadlocks. 20150603 dholland in base - Make "dumpsfs -i N -a image" work. 20150603 dholland in base - Make kernel config script reject duplicate .o names. 20150603 dholland in base - Improve the printouts of testbin/badcall. - Improve printouts of testbin/crash for legibility. 20150528 dholland in base - Comment up testbin/frack/check.c. Badly needed. 20150527 dholland in base, from Keno Fischer. - Fix various minor bugs found by clang-static-analyzer. 20150527 dholland in base - Make the skeleton userland stdio less needlessly dumb. 20150527 dholland in base - New kernel menu test: at2; tests arrays > 1 page. 20150519 dholland in base - New test: bigfork, intended mostly for performance testing. 20150513 dholland in base - Fix "unexpected EOF" bug in frack check. - Fix flagrantly wrong assert in frack check. - Fix fd leaks in frack check. 20150428 dholland in base, from Sam Fishman and Michelle Deng. - Fix error-path assertions in sfs_domount. 20150422 dholland in base - Re-enable ftruncate in frack by default. 20150417 dholland in base, from Nikhil Benesch. - Fix configure test for ntohll. 20150417 dholland in base, from Nikhil Benesch. - Use printf instead of echo -n in shell scripts; it seems that even in 2015 Mac OS X comes with a broken echo, and we don't care about host OSes too old to have printf in sh. 20150322 dholland in base, from Anne Madoff. - Fix typos in non-dumbvm addrspace.h. 20150322 dholland in base - Fix some typos in comments. 20150127 dholland in base - Patch more Linux build problems caused by glibc bugs. OS/161 2.0 released 20150115 ---------------------------- 20150113 dholland in base - Drop to the debugger on panic. 20150113 dholland in base - Document parallelvm -w. 20150113 dholland in base, from Katherine Flavel. - Better man page typesetting. 20150108 dholland in base - Fix FSOP_GETROOT signature/usage so it can fail. 20150108 dholland in base - Add several missing man pages for testbin programs. 20150108 dholland in base - Fix naming of semaphores in testbin/multiexec. 20150107 dholland in base - Rename kern/malloctest.c to kmalloctest.c for clarity. - Also change malloctest* symbols to kmalloctest*. 20140924 dholland in base - Print the kernel build number after linking. OS/161 1.99.08 released 20140924 -------------------------------- Consider this 2.0-RC1. 20140924 dholland in base - Make km3 rotate object sizes as originally intended. 20140924 dholland in base - Make frack print a visible divider when it syncs. 20140922 dholland in base - Add /bin/tac, which uses unlinked scratch files. 20140919 dholland in base - Allow giving testbin/bigfile the chunk size to write. 20140919 dholland in base - Add a design doc about the structure of assignments. 20140919 dholland in base - Make certain sfsck checks set the exit status properly. 20140918 dholland in base - Provide general-purpose metadata I/O function in sfs. 20140916 dholland in base - Remove size workaround in bigexec; the solution set is now fixed. 20140904 dholland in base - Fix problem with stray symlinks in $(OSTREE)/include. 20140904 dholland in base - Change sfs_vnode->sv_v to sv_absvn for consistency. 20140904 dholland in base - Add bloat test; it uses all available memory rapidly. 20140904 dholland in base - Fix testbin/crash for gcc 4.8. 20140904 dholland in base - Make testbin/filetest do something useful if given no argv. 20140904 dholland in base - Add sys/cdefs.h and move userland __DEAD there. - Declare userland err* __DEAD. 20140903 dholland in base - Simplify ram.c interface as suggested by several of my students. 20140829 dholland in base - Add km4: a kmalloc test for multipage allocations. 20140829 dholland in base - Add multiexec test for lots of procs in exec at once. 20140828 dholland in base - Fix inlining for gcc 4.8, and a few other build issues. - Tighten asm constraints for gcc 4.8. 20140825 dholland in base - Remove DEVOP_LASTCLOSE; nothing uses it and we will never add rewind-on-close tape devices. - Don't fsync in sfs_lastclose; it's outdated practice. - Remove VOP_LASTCLOSE; nothing uses it any more. - Remove vnode open count and VOP_INC/DECOPEN. 20140825 dholland in base - Use a separate spinlock for vnode refcounts. (Using vfs_biglock causes sleeping while holding spinlocks.) 20140825 dholland in base - Don't use sfs_io() for directory entries. 20140821 dholland in base - Replace VOP_TRYSEEK with static VOP_ISSEEKABLE. 20140821 dholland in base - Make devices check seek position validity on the fly. 20140806 dholland in base, from Anne Madoff. - Make sfs_link reject directories. 20140730 dholland in base - Make testbin/hog run longer. 20140729 dholland in base - Make psort big enough to be useful as a fs test. - Document psort's sizing knobs. 20140729 dholland in base - Add ARRAYCOUNT() macro for static array length. 20140729 dholland in base - Add array_preallocate(). 20140729 dholland in base - Make npages argument of alloc_kpages() unsigned. 20140729 dholland in base - Tidy up construction/destruction of struct sfs_fs. 20140728 dholland in base - Make sfs_read/writeblock take the buffer length. (One should always do that, even if it's really the same everywhere.) 20140728 dholland in base - struct sfs_super -> struct sfs_superblock. 20140728 dholland in base - Adjust SFS code to make it more readily extensible. 20140728 dholland in base - Rename a bunch of the SFS constants for clarity. - Always call SFS's free block bitmap the "freemap". 20140725 dholland in base - Add usemtest for checking the semfs semaphores. 20140724 dholland in base - Make failed SFS writes not increase the file size. 20140724 dholland in base - Distinguish MIPS 512M RAM limit and LAMEbus 508M limit. 20140722 dholland in base - sfs_dir -> sfs_direntry, by popular demand. 20140722 dholland in base - Add some notes about the atomicity of dup2(). 20140722 dholland in base, from Jared Pochtar. - Add notes about the limits of syscall atomicity in multithreaded processes. 20140722 dholland in base - Add redirect test to check stdin/stdout redirection. 20140722 dholland in base - Add bigseek test for checking seeks beyond 2^32. - Fix emufs handling of seek positions beyond 2^32. 20140721 dholland in base - Add file open mode checks to badcall. 20140721 dholland in base - Fix interaction of kmalloc guards and kmalloc labels. 20140721 dholland in base - Be more conservative about panic on stray interrupt. 20140721 dholland in base - Fix userland build to not belch on removed .h files. - Fix userland build to not rebuild unnecessarily. 20140721 dholland in base - In badcall, don't shout if mkdir isn't implemented. 20140717 dholland in base - Fix misleading comments and variable names in proc.c. 20140716 dholland in base - Add -w option to parallelvm to wait for forking. 20140716 dholland in base - Replace a busywait in badcall with the new user semaphores. 20140716 dholland in base - Provide userlevel semaphores via semfs filesystem. Open "sem:", then use read to P() and write to V(). 20140716 dholland in base - Move the just-fail vnode op stubs to VFS. 20140710 dholland in base - Added new test program: sbrktest. 20140710 dholland in base - Ship qsort() in libc, not in sfsck's compat code. - Make the libc qsort() actually quicksort. 20140709 dholland in base - SWAP{S,L,LL} -> SWAP{16,32,64} in sfs tools. 20140709 dholland in base - Fix reversed found/expected printout in frack check. 20140518 dholland in base - Fix embarrasing sort bugs in native sfsck. 20140430 dholland in base - Add poisondisk tool for testing file system recovery. 20140428 dholland in base - Add hostcompat logic for 64-bit byte-swapping. 20140417 dholland in base - Fix testbin/zero to use page-sized sbrk calls. 20140415 dholland in base - Rewrite dumpsfs and make it much more useful. 20140414 dholland in base - Fix missing initialization of cpu->c_spinlocks. 20140410 dholland in base - Fix bug in malloc changes. Add assertion to malloctest. 20140326 dholland in base - Make userlevel malloc allocate in page-sized chunks. 20140326 dholland in base - Fix the (unused) 64-bit userlevel malloc code. 20140314 dholland in base - Make forktest show how much output is expected. 20140220 dholland in base - Add new sy4 test for CVs. 20140211 dholland in base - Tidy some logic in thread_make_runnable. 20140211 dholland in base, from Anne Madoff. - Mark threads READY when waking them. 20140201 dholland in base, reported by Emmet Jao. - Fix some outdated comments. 20140128 dholland in base - Fix default OSTREE in configure script. OS/161 1.99.07 released 20140123 -------------------------------- 20140123 dholland in base - Add "frack" test (filesystem recover and check). 20140123 dholland in base - Add factorial test that computes using execv. 20140123 dholland in base - Add fs6 test that creates lots of small files. 20140122 dholland in base - Mark enter_new_process and related code __DEAD. 20140122 dholland in base - Make the semaphore counter unsigned. 20140122 dholland in base - When kmalloc gets a page, assert that it's aligned. 20140122 dholland in base, from Christian Anderson. - Fix error leak in sfs_balloc. 20140122 dholland in base - Use ssize_t and pid_t more in unistd.h. 20140122 dholland in base - Add discussion of ARG_MAX to execv man page. 20140122 dholland in base - Add missing for userland. 20140122 dholland in base - Added sparsefile test program for making sparse files. 20140122 dholland in base - splx() needs to work before curcpu/curthread exists. 20140122 dholland in base - Clarify that proc_remthread requires splhigh. 20140115 dholland in base - Remove VOP_INIT/CLEANUP macros. Use vnode_init/cleanup. 20140115 dholland in base - Make device open/close eachopen/lastclose like vnodes. 20140115 dholland in base - Move vfs-level device ops to an ops table struct. 20140115 dholland in base - Clarify/correct comments pertaining to O_APPEND. 20140114 dholland in base - Reorganize SFS sources. 20131112 dholland in base - Reorganize sfsck sources; rework and improve sfsck. - In SFS, always provide N{,D,T}INDIRECT macros. 20131110 dholland in base - Don't use uninitialized file permissions in badcall. 20131110 dholland in base - Provide __UNUSED along with __PF and __DEAD. 20131108 dholland in base - Rearrange (and fix) hacks for _exit() returning. It now faults on "0xeeeee00f" if it can't exit. 20131107 dholland in base - Handle TLB pipeline hazards correctly. 20131107 dholland in base - Add some sample/experimental gdb scripts. 20131107 dholland in base - Make the console polling logic not use internal vars. 20131107 dholland in base - Have wchan_sleep assert if holding extra spinlocks. 20131107 dholland in base - Don't use (our) assignment numbers for kernel configs. 20131107 dholland in base - Remove the synch problems, and their support framework, from the base system. Ship this material as a patch instead. 20131107 dholland in base - Rename src/user -> src/userland. Seems to be the best choice among a number of unappealing alternatives. 20131105 dholland in base - Disallow EINVAL for "no such process" in badcall. 20131105 dholland in base - Clean up sh's use of exit codes. 20131105 dholland in base - Have testbin/crash check the signal numbers produced. 20131105 dholland in base - Create an array of all wchans for debug purposes. 20131105 dholland in base - Rearranged wchan API to make wchans more like CVs. 20131105 dholland in base - Print the processor ID and version correctly. 20131105 dholland in base - Fix boot on pre-multiprocessor System/161. 20131105 dholland in base - Parallelize the kernel depend logic. 20131104 dholland in base - Add and use memory barrier ops header. Minor impact. 20131104 dholland in base - Rename sfs_inode to sfs_dinode. 20131101 dholland in base - Edit and revise the man pages. Add some missing ones. 20131101 dholland in base - Update the docs and specs for waitpid. 20131030 dholland in base - Use execvp() in sh. Don't have to type /bin/cat now. 20131030 dholland in base - Provide getenv() and execvp() in libc. 20131030 dholland in base - enter_user_process() now accepts an environ pointer. 20131030 dholland in base - Add quinthuge, quintmat, quintsort tests. 20131030 dholland in base - Added a libtest with common stuff for testbin/. 20131030 dholland in base - Rewrite the .depend-munging script to be readable. 20131030 dholland in base - Use ENOSYS (standard) instead of EUNIMP (which isn't). 20131030 dholland in base - Fix badcall to expect wait with null status to succeed. 20131030 dholland in base - Don't use unportable function casts in sfs. 20131029 dholland in base - Add more kmalloc debugging modes and checks. - Add a memory leak detection mode to kmalloc. 20131028 dholland in base - Move the whole-filesystem ops to an ops table struct. 20131028 dholland in base - Use designated initializers for the vnode ops tables. 20131028 dholland in base - Fix the way thread_panic zaps the run queue. 20131028 dholland in base - Move memset.c to common/ for use in the kernel. 20131028 dholland in base - Mark thread_exit() __DEAD. 20131028 dholland in base - Fix addrspace handling in proc_destroy(). 20131025 dholland in base - Add another kmalloc test (km3), this one of variable size. - Improve kmalloc to support larger kernel heaps. 20131025 dholland in base - Make printf accept %zd/%zu for size_t. 20130531 dholland in base - Add tests for the threadlist code. 20130531 dholland in base, from Steven Talbot. - Fix threadlist iterators again. 20130531 dholland in base - Do thread migration *before* running the scheduler. 20130531 dholland in base - Add some more assertions to kfree. 20130531 dholland in base - Make badcall understand wait-for-any waitpid(). 20130531 dholland in base - Fix depends bug in os161.hostcompile.mk. - Put .depend files in build tree where they belong. - Provide a predepend: hook for makefiles. 20130531 dholland in base - Remove getinterval(); replace with timespec arithmetic. 20130531 dholland in base - Use struct timespec inside the kernel. 20130531 dholland in base - Move kern/startup -> kern/main, like it was in 1.x. 20130531 dholland in base - Add "zero" test; checks if the VM system zeros pages. 20130531 dholland in base - Change as_activate() to always activate curproc's AS. 20130531 dholland in base - Provide both thread and process structures by default. 20130530 dholland in base - Fix the scheme for probing LAMEbus device versions; don't require lockstep upgrades for System/161 changes. 20130530 dholland in base, from Saagar Deshpande. - Fix typo in comment. 20130530 dholland in base - Add comment warning against borrowing from dumbvm. 20130530 dholland in base - Increase DUMBVM_STACKPAGES so 64K argv blocks will fit. 20130514 dholland in base - Teach sfsck to handle dirs with invalid inode numbers. 20130503 dholland in base, reported by multiple students. - Fix another problem in the inode array in sfsck. 20130429 dholland in base - Fix sfsck bitmap-checking problem. 20130311 dholland in base - Declare panic() and badassert() noreturn. 20130308 dholland in base, found by George Kulakowski. - Fix fd leak in badcall. 20130306 dholland in base, found by David Palmer. - Fix off_t printing in randcall. 20110427 dholland in base, from Andy Brody. - Fix typo in badcall. 20110425 dholland in base, found by Jim Danz. - Fix catastrophic bug in sfsck. 20110420 dholland in base - Add new bigexec test for checking large argvs. 20110319 dholland in base - Use va_copy() in __printf. (At least if available.) 20110223 dholland in base, from Amy Tai. - array.h needs cdefs.h and lib.h. 20110127 dholland in base - Fix host-psort build problem caused by glibc on Linux. OS/161 1.99.06 released 20110126 -------------------------------- 20110126 dholland in base - Fix some parallel build problems. 20110126 dholland in base - Rename fs5 test to "long stress test". 20110126 dholland in base - Clarify that struct tlbshootdown is a placeholder. 20110126 dholland in base - Fix randcall makefile to put calls.c in the build dir. 20110126 dholland in base - VOP_OPEN -> VOP_EACHOPEN; VOP_CLOSE -> VOP_LASTCLOSE. 20110126 dholland in base - Name struct spinlock's members splk_*, not lk_*. 20110126 dholland in base - sfs_fs.c -> sfs_fsops.c, sfs_vnode.c -> sfs_vnops.c 20100819 dholland in base - Fix the stray console IRQs problem properly. This requires System/161 1.99.05 or higher. 20100819 dholland in base - Revert start/endpolling hack for stray console IRQs. (But keep the code for masking interrupts.) 20100819 dholland in base - Don't leave the IPI spinlock dangling on a panic IPI. OS/161 1.99.05 released 20100108 -------------------------------- 20100108 dholland in base - Don't cut corners with relocs in mips-exception1.S. 20100108 dholland in base - Rearrange how curthread/curcpu get defined, so the mips gdb can see curthread. 20100108 dholland in base - Disable BSS zeroing in loadelf, because VM systems should already provide zeroed pages. Make dumbvm do so. 20100108 dholland in base - Add ASST3-OPT optimizing config. 20100108 dholland in base - Add the shell's design doc to design/. - Add the usermalloc design doc to design/. 20100108 dholland in base - Fix outdated comment in start.S. 20100108 dholland in base - Move clocksleep() decl to . 20100107 dholland in base - Clarify various comments that seem lacking. 20090427 dholland in base, from multiple students. - Fix miscommented uio direction constants. Doh. 20090424 dholland in base - Add missing as_activate(NULL) during thread exit. 20090416 dholland in base, mostly from Robert J. Helblin and Peter Salas. - Fix err/warn vs. errx/warnx usage in various tests. 20090413 dholland in base - Use EFBIG, not EINVAL, for "file too large". - Note that this and the following few changes were committed on a separate branch for noncritical fixes that was merged after the 1.99.04 release, which went to students as a mid-semester patch. 20090402 dholland in base - Make sbrk badcall "unaligned negative" really negative. 20090402 dholland in base - Add clarifying comments to struct tlbshootdown. 20090320 dholland in base - Fix DEBUG() so it accepts zero vararg parameters. 20090214 dholland in base - Remove some references to obsolete name "md_usermode". 20090213 dholland in base - Note that wchans don't promise to be FIFO. 20090205 dholland in base - Add missing 'volatile' to spinlock.h. OS/161 1.99.04 released 20090414 -------------------------------- 20090414 dholland in base - Fix typo in kern/sfs.h. 20090414 dholland in base - Fix up testbin/psort so it works adequately on sfs. 20090413 dholland in base - Make sfsck track indirect blocks in the free map right. 20090413 dholland in base - Fix bug where sfsck chokes on size 0 directories. 20090413 dholland in base - Fix case where sfsck can't add missing . and .. entries. 20090413 dholland in base - Add sfsck, simple check/recovery tool for sfs. OS/161 1.99.03 released 20090402 -------------------------------- 20090402 dholland in base - Fix build of testbin/malloctest. 20090320 dholland in base - Check CURCPU_EXISTS in spinlock_do_i_hold. 20090313 dholland in base - Fix threadlist iterator macros. OS/161 1.99.02 released 20090219 -------------------------------- 20090219 dholland in base - Add missing W* macros with waitpid in testbin progs. 20090219 dholland in base - Work around gcc tailcall bug affecting testbin/crash. 20090219 dholland in base - Fix missing vfs_biglock ops in vfs_getcwd(). 20090219 dholland in base - Fix bad userland declaration of lseek(). 20090219 dholland in base - Fix userland .depend file generation. 20090219 dholland in base - Add join32to64 and split64to32. 20090219 dholland in base - Clarify some comments in the mips syscall.c. 20090219 dholland in base - Make stack frames in assembly code 64-bit aligned. 20090217 dholland in base - Fix some glitches in the shell. 20090210 dholland in base - Fix interrupt level management in trap handling. 20090209 dholland in base - The on-chip timers can't be used for clocksleep(). OS/161 1.99.01 released 20090203 -------------------------------- 20090202 dholland in base - Don't ever migrate curthread to another cpu. 20090202 dholland in base - Use the W* wait macros in the shell. 20090202 dholland in base - Document the W* wait macros. OS/161 1.99.00 released 20090202 -------------------------------- 20090201 dholland in base - Implement kernel-side support for the GP register. - Change kernel load address to waste less low memory. - Add an input buffer to the console device. - Fix some bugs. 20090201 dholland in base - Update man pages for 2.x. 20090201 dholland in base - Remove the built-in copy of make. Too much realism; it creates unnecessary hassles. Just ship make with the toolchain. 200901** dholland in base - Assorted major hacking to prepare first pre-2.0 tree. - Multiprocessor support. - Improve organization of source tree. - Add the shell (formerly in sol2) and user malloc (formerly in sol3) to the base system. 20081224 dholland in base - Begin importing OS/161 1.x bits. (OS/161 2.x branches off from what's projected to be OS/161 1.x release 1.12.) OS/161 1.x change log --------------------- 20090115 dholland in base - Fix wrong comment in lib.h. 20090106 dholland in base - Fix typo in error message in newvers.sh. 20080825 dholland in base - Fix typo in comment in start.S. 20080825 dholland in base, reported by Melissa O'Neill a long time ago. - Add curspl assertion to thread_yield. OS/161 1.11 released 20050913 ----------------------------- 20050907 dholland in base - Minor changes for clean build under gcc 4.0.1. 20050321 dholland in base, found by Qicheng Ma. - Add volatile to testbin/ctest. 20050307 dholland in base - Create for vaddr_t/paddr_t. 20050228 dholland in base, found by R.L. West. - Some standards compliance. 20040510 dholland in base, from Lukasz Strozek. - Fix args handling in testbin/tail. 20040204 dholland in base - Be more consistent about refcounts in vfscwd.c. OS/161 1.10 released 20040203 ----------------------------- 20040203 dholland in base - Support for hosting OS/161 on Solaris. 20040202 dholland in base - Update stdarg.h for gcc 3.x; remove machine/stdarg.h. OS/161 1.09 released 20031227 ----------------------------- 20031224 dholland in base - Add missing man page for triplesort. 20031224 dholland in base - Fix failed compile in lnet.c, currently a null driver. 20031224 dholland in base - Fix badcall so it doesn't blow up on empty stdin. 20031224 dholland in base, from Hassan Sultan. - Fix argument handling in bin/ln. 20031224 dholland in base, from Brian Greenberg. - Fix link count leak in sfs_rename. 20031224 dholland in base - Fix silly use-after-free in an SFS mount error path. 20031224 dholland in base, from Mike Hamburg. - Fix unaligned sections in dumbvm. 20031224 dholland in base - Refer to assignments by content, not number, where possible. - Change "asst1probs" to "synchprobs". 20031224 dholland in base - Fix some nonsensical but working code in /bin/pwd. 20031224 dholland in base - Update stack assertions in mips/trap.c for 4k stacks. 20031224 dholland in base - Install kernels using their configuration name. 20031224 dholland in base - Clarify some aspects of the locks/CVs API. 20031224 dholland in base - Fix assorted comment typos and glitches. 20030626 dholland in base - Commit the fix for a refcounting mistake in SFS. 20030626 dholland in base - Fix glitch in one of the dup2 tests in testbin/badcall. 20030626 dholland in base - Add missing sized type in mksfs/support.h. 20030626 dholland in base - Fix "make depend" glitch in dumpsfs. 20030626 dholland in base - Fix minor off-by-one error in menu code. 20030421 dholland in base - Fix assertion failure in kernel heap dump code. 20030421 dholland in base - Fix crash in testbin/dirconc. OS/161 1.08 released 20030221 ----------------------------- Apparently sol2-1.08 was not released until 20030310. 20030309 dholland in sol2 - Make shell accept being run with argc==0. 20030309 dholland in sol2 - Add support for WNOHANG to shell. 20030221 dholland in base - Fix broken hostcompat build with some Linux libcs. 20030207 gwa/dholland in base - Fix broken ASST1 build caused by rushed release. OS/161 1.07 released 20030131 ----------------------------- 20030131 gwa in base - New assignment 1 problems for 2003. 20030129 dholland in base - Make console device full-duplex. 20030129 dholland in base - Check for short reads when loading executable headers. 20030129 dholland in base - Make rmtest a single standalone executable. 20030129 dholland in base - Make first thread stack also 4k rather than 8k. 20030129 dholland in base - Fix minor VFS bug handling multiple leading slashes. 20030129 dholland in base - Remove code duplication in triple* tests. 20030129 dholland in base - Add triplesort test (like triplemat). 20030128 dholland in base - Make f_test a single standalone executable. 20030128 dholland in base - Add t_ prefix to struct thread members for consistency. 20030128 dholland in base - bzero by words instead of bytes when properly aligned. 20030128 dholland in base - Add memcmp() to libc. 20030127 dholland in base - Minor fixes to parallelvm. OS/161 1.06 released 20030117 ----------------------------- 20030110 dholland in base - Fix bug in setjmp/longjmp. 20030110 dholland in base - Add small explanatory comment to dev/lamebus/emu.c. 20021120 dholland in base - Have configure script provide NM and HOST_NM. 20021120 dholland in base - Merge hostcompat fixes for Mac OS X. 20021001 dholland in base - Avoid undefined C behavior in atoi(). 20020920 dholland in base - Provide string names for mips trap codes. 20020920 dholland in base - Fix handling of boot-time kernel memory faults. OS/161 1.05 released 20020917 ----------------------------- 20020913 dholland in base - Created this changelog from CVS log data. 20020904 dholland in base - Cleanup/improvement for testbin/malloctest. 20020904 dholland in sol2 - Add code to shell to do timing of subprocesses. 20020904 dholland in base - Adjust prototype for __time() for hostcompat reasons. 20020904 dholland in base - Add parallelvm and dirconc to the default build. 20020904 dholland in base - Add mode to testbin/crash to fork and run everything. 20020904 dholland in base - Retry certain I/O errors in emufs and sfs. 20020904 dholland in base - Make vfs_close not fail. 20020830 dholland in base - Prohibit slashes and colons in volume names in mksfs. 20020830 dholland in base - _O_RDWRMASK -> O_ACCMODE, per POSIX. 20020830 dholland in base - Shrink kernel stacks from 8k to 4k. 20020830 dholland in base - Merge the code for the 'p' and 's' menu commands. 20020830 dholland in base - Don't use OPEN_MAX in the base system. 20020829 dholland in base - Include a copy of the error strings in the kernel. 20020829 dholland in base - Assert that spl is 0 on syscall entry and exit. 20020829 dholland in base - Fixes and new tests for testbin/badcall. 20020829 dholland in base - Add code and menu command for dumping kernel heap. 20020827 dholland in base - Close current directory at shutdown time. 20020827 dholland in base - Clear bootfs at shutdown time. 20020827 dholland in base - Remove extraneous magic argument from free_kpages(). 20020827 dholland in base - Fix dangling lock bug in emufs. 20020826 dholland in base - Man page fixes for read, write, waitpid. 20020808 dholland in base - Make Ant-32 port mostly work. 20020625 dholland in base - Kernel makefile tweak for stupid makes. 20020618 dholland in base - Fixes to the Ant-32 port. 20020617 dholland in base - Update the (unreleased) Ant-32 port. 20020523 dholland in base - Make matmult exit 1 on failure. 20020523 dholland in base - Fix various forking userlevel tests to wait properly. 20020523 dholland in base - Check for short reads when loading executables. 20020523 dholland in base - Fix bug in tt3 test. 20020523 dholland in base - Some make/build fixes. 20020523 dholland in base - More mips calling conventions fixes. 20020522 dholland in base - Fix bug in new mips exception code. 20020522 dholland in base - Revamp testbin/badcall. 20020515 dholland in base - Various accumulated minor cleanups and fixes. 20020515 dholland in base - New tests: dirconc, parallelvm. 20020515 dholland in base - Add missing V() in lhd driver. 20020515 dholland in base - Fixes for the thread code. 20020515 dholland in base - Tweak mips exception code for gdb's benefit. 20020515 dholland in base - Clean up dumbvm code. 20020515 dholland in base - Initialize mips stacks better, for gdb's benefit. 20020425 dholland in base - Fixes for testbin/f_test. 20020424 dholland in base, found by Richard Eisenberg. - Fix kmalloc bug. 20020424 dholland in base - Fix incorrect error codes in testbin/badcall. 20020424 dholland in base - Move stray assert in vfs code. 20020407 dholland in base - Fix off-by-one error in lhd driver. 20020325 dholland in base - Fix memory leak in malloctest. 20020318 dholland in base - Patch for race in thread_exit. (Fixed properly 5/15.) 20020305 dholland in base - Fix spl leak on thread_fork failure. 20020305 dholland in base - Fix for testbin/crash. OS/161 1.04 released 20020216 ----------------------------- 20020216 dholland in base - Fix warning in kmalloc debugging code. 20020216 dholland in base - Adjust testbin/badcall to assignment 2 requirements. 20020215 dholland in base - Add cpu_halt() to supplement cpu_idle(), to fix crash. 20020215 dholland in base - Fixes for matmult. 20020215 dholland in base - Fix garbled comment in vm.h. 20020215 dholland in base - Fix prototype of _exit(). 20020208 dholland in base - Fix stack frame of mips __start for gdb's benefit. 20020208 dholland in base - Fix queue bug. 20020208 dholland in base - Fix bug in testbin/{badcall,crash,faulter}. OS/161 1.03 released 20020131 ----------------------------- 20020131 dholland in base - Yield more on thread start (OPT_ASST1PROBS only). 20020131 dholland in base - Fix whalemating code to match assignment. 20020131 dholland in base - New synchronization problems for 2002. 20020131 dholland in base - Include fix in mips pcb.h. 20020130 fedorova in base - Adjust tt3 iteration counts/sizes. 20020129 georgi in base - Fix broken mksfs and dumpsfs build. 20020124 dholland in base - Put time() in libc; add __time() syscall. 20020124 dholland in base - Have hostcompat make stdout and stderr unbuffered. 20020124 dholland in base - Add sample optimizing config (ASST2-OPT). 20020124 dholland in base - New tests: dirseek, rmdirtest, triplemat. 20020123 dholland in base - Move matmult2 over original matmult. 20020123 dholland in base - Assert nobody's waiting when destroying a semaphore. 20020123 dholland in base - Add driver for new ltrace device. 20020123 dholland in base - Fix cosmetic bug in hardclock config. 20020121 dholland in base - Support ls over emufs. 20020121 dholland in base - Fix bug in copyinstr/copyoutstr code. 20020121 dholland in base - Fix broken Linux build of libhostcompat. 20020119 dholland in base - Alter dumbvm and loadelf for new toolchain. 20020117 dholland in base - Check for stack overflow during context switch. 20020117 dholland in base - Stop using -O2 with -g for mips. 20020117 dholland in base - More mips calling conventions fixes. 20020117 dholland in base - Correct the inline asm in spl.c. 20020117 dholland in base - Remove machine/inlineasm.h; fold into spl.c. 20020117 dholland in base - Avoid using default make-supplied CFLAGS. 20020117 dholland in base - Fix use of libhostcompat in mksfs and dumpsfs. 20020117 dholland in base - Fix cosmetic bug in configure script. 20020116 dholland in base - Adjust various things for new toolchain. 20020110 dholland in base - Install hostcompat includes properly. 20020110 dholland in base - Various fixes for new gcc (3.0.3) and binutils. 20020104 dholland in base - More man pages. 20020103 dholland in base - Remove excess register saves from mips context switch. 20020103 dholland in base - Move old getcwd to __getcwd; put POSIX getcwd in libc. 20020103 dholland in base - Tinker with tt3 test. 20020102 dholland in base - Change thread_fork so it can return errors. 20020102 dholland in base - Preallocate various things to avoid dying in mi_switch. 20010925 dholland in base - Add a bunch of consistency checks to sfs. 20010925 dholland in base - Fix bug in new panic code. 20010925 dholland in base - Add menu command to panic intentionally. 20010925 dholland in base - Fix bug in emufs. 20010925 dholland in base - memcpy by words instead of bytes when properly aligned. 20010925 dholland in base - Use setjmp() and longjmp() for aborting copyin/copyout. 20010925 dholland in base - Add code for setjmp() and longjmp(). 20010921 dholland in base - Add VOP_KILL (undoes VOP_INIT, which can now fail too.) 20010921 dholland in base - Fix race conditions in vnode reclaim. 20010921 dholland in base - Fix VFS behavior for things like "rmdir foo:". OS/161 1.02 released 20010921 ----------------------------- 20010921 dholland in base - Revise device config/attach code. 20010920 dholland in base - Standards compliance fixes for strchr/strrchr. 20010920 dholland in base - Fix bug in system(). 20010919 dholland in base - More man pages. 20010918 dholland in base - Changed MAXNAMLEN to NAME_MAX. 20010918 dholland in base - Fix bug in kernel menu pwd command. 20010918 dholland in base - Panic handling improvements. 20010918 dholland in base - Kernel bootup and shutdown cleanup. 20010918 dholland in base - Fixes for testbin/badcall. 20010824 dholland in base - Make config script probe for . 20010821 dholland in base - Changes to queue code for consistent naming. 20010808 dholland in base - Add man pages. 20010808 dholland in sol2 - The shell can now use again, so do so. 20010808 dholland in base - Add explicit support for host-runnable programs. 20010807 dholland in base - Clean up -nostdinc/-nostdlib handling. 20010807 dholland in base - Fix bug in cp. 20010807 dholland in base - New test in testbin/crash. 20010807 dholland in base - Fixes for testbin/malloctest. 20010806 dholland in base - Fix glitch in testbin/badcall. 20010806 dholland in base - New test: randcall. 20010804 dholland in base - Add missing strrchr proto to . 20010803 dholland in base - Clean up ls; among other things, fix ls -R. 20010803 dholland in base - Fixes for testbin/badcall. 20010803 dholland in base - Add memset() to libc. 20010803 dholland in base - Split part of testbin/crash to new testbin/badcall. 20010802 dholland in base - Add comments to testbin describing intended uses. 20010802 dholland in base - Fix testbin/ctest to be large enough to be interesting. 20010802 dholland in base - Fix testbin/sort to be quicksort instead of bubblesort. 20010802 dholland in base - Various minor testbin fixes/cleanup. 20010802 dholland in base - Add dummy to make porting easier. - Add dummy to make porting easier. - Add dummy to make porting easier. - Add dummy to make porting easier. - Add dummy to make porting easier. 20010802 dholland in base - Have kfree deadbeef out free blocks. 20010801 dholland in base - Time execution of every kernel menu command. 20010801 dholland in base - Add getinterval() function for subtracting times. 20010801 dholland in base - Print commands as they execute from the command string. 20010801 dholland in base - New test tt3; add atoi from libc to kernel build. 20010801 dholland in base - Add memcpy from libc. 20010801 dholland in base - Fix size_t and add memcpy() to libc. 20010801 dholland in base - Reset mips TLB at boot time. 20010801 dholland in base - Revise kernel menu layout. 20010801 dholland in base - Add tests for arrays, bitmaps, queues, and semaphores. 20010801 dholland in base - Add "reconfig" rule to kernel makefiles. 20010801 dholland in base - Fix queue code. 20010731 dholland in base - Move main.c from kern/thread to kern/main. 20010730 dholland in base - Add kernel menu command to unmount things. 20010730 dholland in base - Add vfs_unmountall() for shutdown time. 20010730 dholland in base - Report mounts to the console as they happen. 20010730 dholland in base - Abolish pointless kernel shutdown functions. 20010726 dholland in base - Add config support for pseudo-devices. - Add pseudorand device for when hardware is missing. - Add random: device accessible through VFS. 20010724 dholland in base - Yield randomly at thread start if OPT_ASST1PROBS set. 20010724 dholland in base - Clarify comments in mips exception.S. 20010724 dholland in base - Don't allow calling P() from an interrupt handler. 20010724 dholland in base - Fixes for lser driver. 20010723 dholland in base - More mips calling conventions fixes. 20010626 dholland in base - Massive changes to kernel menu UI. - Add pwd and sync to kernel menu. 20010619 dholland in base - Change as_copy so it can return error codes. 20010619 dholland in base - Merge bitmap_isset() from sol3. 20010619 dholland in base - Various fixes for new dumbvm. 20010619 dholland in base - Fix overly enthusiastic test in vnode_check(). 20010619 dholland in base - Provide a sketch of the skeleton for doing fork. 20010618 dholland in base - Add asserts to synch code. 20010618 dholland in base - Clean up/clarify syscall entry code. 20010618 dholland in base - New dumbvm supporting multiple address spaces. 20010618 dholland in base - Remove mips dependencies from loadelf.c. 20010618 dholland in base - Add hacks to prevent looping "Unknown syscall -1". 20010615 dholland in base - Merge the kmalloc and kfree from sol3. 20010614 dholland in base - Move kernel menu stuff to its own file. 20010614 dholland in base - Fixes for sfs and vfs layer. 20010612 dholland in base - Add sfs_rwblock to encapsulate sfs_device->d_io(). 20010612 dholland in base - Add lbolt and clocksleep() functionality to kernel. 20010612 dholland in base - Add -W to standard warning options. 20010611 dholland in base - Abolish rcsids. 20010611 dholland in base - Fix memory leak on error in thread_fork. 20010611 dholland in base - Don't panic if kmalloc fails. Add checks. 20010611 dholland in base - Add VOP_MAGIC to vnode ops tables, and lots of checks. 20010611 dholland in base - Add array_setguy(). 20010608 dholland in base - Add random() and srandom() to libc. 20010608 dholland in base - Add some framework for user-level malloc to libc. 20010608 dholland in base - Correct prototypes for read() and write(). 20010608 dholland in base - kprintf synchronization cleanups. 20010523 dholland in sol2 - Allow DEL as well as BS for backspacing in shell. 20010523 dholland in base - Add warning about the consequences of touching paddr 0. 20010523 dholland in base - Fix open count handling on VOP_CLOSE error. 20010523 dholland in base - New test: malloctest. 20010428 dholland in base - Handle multiple leading slashes on pathnames. 20010423 dholland in base - Fix deadlock in vfs layer. 20010423 dholland in base - Fix bug in testbin/dirtest. 20010423 dholland in base - Fix multiple bugs in ls. 20010422 dholland in base - Fix another bug in sfs. 20010419 dholland in base, from Amos Blackman. - Fix bug in sfs. 20010416 dholland in base - Fix fstest code. 20010416 dholland in base - Remove stray debug output from dumpsfs. 20010414 dholland in base - Makefile fix: build mksfs and dumpsfs by default. - Fix host mksfs/dumpsfs build on DU. 20010414 dholland in base, found by Dafina Toncheva. - Fix bug in sfs. 20010414 dholland in base - Fix endianness bug in dumpsfs. 20010414 dholland in base - Do a sync at shutdown time. 20010414 dholland in base - Format depend.mk files consistently. 20010414 dholland in base - Fix memory leak in sfs. 20010413 dholland in base - Allow VOP_FSYNC on sfs directories. 20010412 dholland in base - Detect infinite loop triggerable by uio misuse. 20010411 dholland in base - Fix bug in bitmap code. 20010406 dholland in base - Fix calling conventions in mips asm code. 20010323 dholland in base, found by Jeff DeSoto. - Fix multi-sector lhd I/Os. 20010322 dholland in base, found by Jeffrey Enos. - Fix bug in comment in pcb.c. 20010319 dholland in base - Make matmult smaller. 20010318 moorthi in base - Fix bug in array code. 20010314 dholland in base, found by Edward Lim. - Fix bug in mv. 20010314 dholland in base, found by Mike Vernal. - Fix bug in testbin/crash. 20010314 dholland in base - Fix bug in bitmap code. 20010308 moorthi in base - Fix bug in sfs. OS/161 1.01 released 20010226 ----------------------------- 20010226 dholland in sol2 - Shell fixes. 20010226 dholland in base - Add a lock to the console device. 20010226 dholland in base - Fix another bug in copyin/copyout code. 20010226 dholland in base - Use device name for FSes that don't return a volname. - Add vfs_getdevname(). 20010226 dholland in base - Make /bin/pwd work in emufs. - Fix two bugs in pwd. 20010225 dholland in base - Fix bug in mips copyin/copyout code. - Fix bug in mips trap code. 20010224 dholland in base - Add appropriate volatile keywords in various places. 20010224 dholland in base - Fix synchronization in placeholder kmalloc. 20010221 dholland in base - Fix bug in CV code. OS/161 1.00 released 20010208 ----------------------------- 20010208 dholland in base - Add EBADF to error list. 20010208 dholland in base - Fix specification of VOP_STAT. 20010208 blackman in base - Fix naming of queue functions. 20010208 blackman in base - Driver for lrandom device. 20010207 dholland in base - Check all calls to thread_fork for failure. 20010206 dholland in base - Fix comment in mips/specialreg.h. 20010205 dholland in base - Prevent recursive scheduler calls. (Fixes crash.) 20010205 dholland in base - Make syscall wrapper generation more robust. 20010205 dholland in base - Fix bug in cp. OS/161 0.99 released 20010202 ----------------------------- 20010202 dholland in base - Add host-sh (host-runnable version) to sh makefile. 20010202 dholland in base - Add licensing boilerplate. 20010201 dholland in base - Switch from getfilesize() to fstat(). 20010201 dholland in base - Add system(). 20010130 dholland in base - Add strtok() and strtok_r(). 20010129 dholland in base - Add ELF code. 20010111 dholland in base - Fix bug in ls. 20010103 dholland in base - Initial checkin of development tree.