diff --git a/CHANGES b/CHANGES index 76db7c3..804f1cb 100644 --- a/CHANGES +++ b/CHANGES @@ -11,679 +11,1878 @@ various other people, all of whom are (hopefully) listed below. ------------------------------------------------------------ -20150805 dholland OS/161 2.0.1 released. -20150804 dholland Improve multiexec's error reporting. -20150804 dholland Minor fixes to frack check. -20150722 dholland Add assertions to dumbvm to check that sleeping is ok -........ in various contexts real VM systems typically sleep. -20150722 dholland Initialize curcpu/curthread a bit earlier. -20150721 dholland 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 Make all sfs prints/panics include the volume name. -20150713 dholland Have sfsck print invalid inode type values. -20150713 dholland Have forktest print ABCD instead of 1234 for clarity. -20150713 dholland Kill off allwchans[]; in practice it isn't useful. -20150710 dholland Split out the pieces of sys_sync for reusability. -20150706 dholland Add support for new sys161 profiler control registers. -20150625 dholland Fix frack "writetruncseq" workload. -20150605 dholland Have semfs update uio_offset; increases robustness. -20150605 dholland Don't do semfs I/O from NULL. It causes consternation. -20150605 dholland Warn that copying threadlist structures breaks them. -20150605 dholland New test: schedpong, an actual scheduler workload, now -........ possible because we have semfs. -20150603 dholland Add example unit tests for the provided semaphores. -20150603 dholland In panic, drop to the debugger before sync, not after. -........ Otherwise, the sync complicates postmortem analysis. -20150603 dholland Make "dumpsfs -i N -a image" work. -20150603 dholland Improve the printouts of testbin/badcall. -20150603 dholland Make kernel config script reject duplicate .o names. -20150603 dholland Improve printouts of testbin/crash for legibility. -20150528 dholland Comment up testbin/frack/check.c. Badly needed. -20150527 dholland Fix various minor bugs found by clang-static-analyzer. -........ From Keno Fischer. -20150527 dholland Make the skeleton userland stdio less needlessly dumb. -20150527 dholland New kernel menu test: at2; tests arrays > 1 page. -20150519 dholland New test: bigfork, intended mostly for performance -........ testing. -20150513 dholland Fix "unexpected EOF" bug in frack check. -20150513 dholland Fix flagrantly wrong assert in frack check. -20150513 dholland Fix fd leaks in frack check. -20150428 dholland Fix error-path assertions in sfs_domount; from -........ Sam Fishman and Michelle Deng. -20150422 dholland Re-enable ftruncate in frack by default. -20150417 dholland Fix configure test for ntohll. From Nikhil Benesch. -20150417 dholland 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 OSes too old to have -........ printf in sh. From Nikhil Benesch. -20150322 dholland Fix typos in non-dumbvm addrspace.h; from Anne Madoff. -20150322 dholland Fix some typos in comments. -20150127 dholland Patch more Linux build problems caused by glibc bugs. -20150115 dholland OS/161 2.0 released. -20150113 dholland Drop to the debugger on panic. -20150113 dholland Document parallelvm -w. -20150113 dholland Better man page typesetting. From Katherine Flavel. -20150108 dholland Fix FSOP_GETROOT signature/usage so it can fail. -20150108 dholland Add several missing man pages for testbin programs. -20150108 dholland Fix naming of semaphores in testbin/multiexec. -20150107 dholland Also change malloctest* symbols to kmalloctest*. -20150107 dholland Rename kern/malloctest.c to kmalloctest.c for clarity. -20140924 dholland Print the kernel build number after linking. +OS/161 2.0.2 released 20160112 +------------------------------ -20140924 dholland OS/161 1.99.08 released. Consider this 2.0-RC1. -20140924 dholland Make km3 rotate object sizes as originally intended. -20140924 dholland Make frack print a visible divider when it syncs. -20140922 dholland Add /bin/tac, which uses unlinked scratch files. -20140919 dholland Allow giving testbin/bigfile the chunk size to write. -20140919 dholland Add a design doc about the structure of assignments. -20140919 dholland Make certain sfsck checks set the exit status properly. -20140918 dholland Provide general-purpose metadata I/O function in sfs. -20140916 dholland Remove size workaround in bigexec; fixed solution set. -20140904 dholland Fix problem with stray symlinks in $(OSTREE)/include. -20140904 dholland Change sfs_vnode->sv_v to sv_absvn for consistency. -20140904 dholland Add bloat test; it uses all available memory rapidly. -20140904 dholland Fix testbin/crash for gcc 4.8. -20140904 dholland Make testbin/filetest do something useful if no argv. -20140904 dholland Declare userland err* __DEAD. -20140904 dholland Add sys/cdefs.h and move userland __DEAD there. -20140903 dholland Simplify ram.c interface as suggested by my students. -20140829 dholland Add km4: a kmalloc test for multipage allocations. -20140829 dholland Add multiexec test for lots of procs in exec at once. -20140828 dholland Tighten asm constraints for gcc 4.8. -20140828 dholland Fix inlining for gcc 4.8, and a few other build issues. -20140825 dholland Remove vnode open count and VOP_INC/DECOPEN. -20140825 dholland Remove VOP_LASTCLOSE; nothing uses it any more. -20140825 dholland Don't fsync in sfs_lastclose; it's outdated practice. -20140825 dholland Remove DEVOP_LASTCLOSE; nothing uses it and we will -........ never add rewind-on-close tape devices. -20140825 dholland Use a separate spinlock for vnode refcounts. (Using -........ vfs_biglock causes sleeping while holding spinlocks.) -20140825 dholland Don't use sfs_io() for directory entries. -20140821 dholland Replace VOP_TRYSEEK with static VOP_ISSEEKABLE. -20140821 dholland Make devices check seek position validity on the fly. -20140806 dholland Make sfs_link reject directories. From Anne Madoff. -20140730 dholland Make testbin/hog run longer. -20140729 dholland Document psort's sizing knobs. -20140729 dholland Make psort big enough to be useful as a fs test. -20140729 dholland Add ARRAYCOUNT() macro for static array length. -20140729 dholland Add array_preallocate(). -20140729 dholland Make npages argument of alloc_kpages() unsigned. -20140729 dholland Tidy up construction/destruction of struct sfs_fs. -20140728 dholland Make sfs_read/writeblock take the buffer length. -........ (Always do that, even if it's the same everywhere.) -20140728 dholland struct sfs_super -> struct sfs_superblock. -20140728 dholland Adjust SFS code to make it more readily extensible. -20140728 dholland Always call SFS's free block bitmap the "freemap". -20140728 dholland Rename a bunch of the SFS constants for clarity. -20140725 dholland Add usemtest for checking the semfs semaphores. -20140724 dholland Make failed SFS writes not increase the file size. -20140724 dholland Distinguish MIPS 512M RAM limit and LAMEbus 508M limit. -20140722 dholland sfs_dir -> sfs_direntry, by popular demand. -20140722 dholland Add some notes about the atomicity of dup2(). -20140722 dholland Add notes about the limits of syscall atomicity in -........ multithreaded processes. From Jared Pochtar. -20140722 dholland Add redirect test to check stdin/stdout redirection. -20140722 dholland Fix emufs handling of seek positions beyond 2^32. -20140722 dholland Add bigseek test for checking seeks beyond 2^32. -20140721 dholland Add file open mode checks to badcall. -20140721 dholland Fix interaction of kmalloc guards and kmalloc labels. -20140721 dholland Be more conservative about panic on stray interrupt. -20140721 dholland Fix userland build to not rebuild unnecessarily. -20140721 dholland Fix userland build to not belch on removed .h files. -20140721 dholland In badcall, don't shout if mkdir isn't implemented. -20140717 dholland Fix misleading comments and variable names in proc.c. -20140716 dholland Add -w option to parallelvm to wait for forking. -20140716 dholland Replace a busywait in badcall with the new semaphores. -20140716 dholland Provide userlevel semaphores via semfs filesystem. -........ Open "sem:", then read to P() and write to V(). -20140716 dholland Move the just-fail vnode op stubs to VFS. -20140710 dholland Added new test program: sbrktest. -20140710 dholland Make the libc qsort() actually quicksort. -20140709 dholland Ship qsort() in libc, not in sfsck's compat code. -20140709 dholland SWAP{S,L,LL} -> SWAP{16,32,64} in sfs tools. -20140709 dholland Fix reversed found/expected printout in frack check. -20140518 dholland Fix embarrasing sort bugs in native sfsck. -20140430 dholland Add poisondisk tool for testing file system recovery. -20140428 dholland Add hostcompat logic for 64-bit byte-swapping. -20140417 dholland Fix zero to use page-sized sbrk calls. -20140415 dholland Rewrite dumpsfs and make it much more useful. -20140414 dholland Fix missing initialization of cpu->c_spinlocks. -20140410 dholland Fix bug in malloc changes. Add assertion to malloctest. -20140326 dholland Make userlevel malloc allocate in page-sized chunks. -20140326 dholland Fix the (unused) 64-bit userlevel malloc code. -20140314 dholland Make forktest show how much output is expected. -20140220 dholland Add new sy4 test for CVs. -20140211 dholland Tidy some logic in thread_make_runnable. -20140211 dholland Mark threads READY when waking them. From Anne Madoff. -20140201 dholland Fix some outdated comments, reported by Emmet Jao. -20140128 dholland Fix default OSTREE in configure script. +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. -20140123 dholland OS/161 1.99.07 released. -20140123 dholland Add "frack" test (filesystem recover and check). -20140123 dholland Add factorial test that computes using execv. -20140123 dholland Add fs6 test that creates lots of small files. -20140122 dholland Mark enter_new_process and related code __DEAD. -20140122 dholland Make the semaphore counter unsigned. -20140122 dholland When kmalloc gets a page, assert that it's aligned. -20140122 dholland Fix error leak in sfs_balloc; from Christian Anderson. -20140122 dholland Use ssize_t and pid_t more in unistd.h. -20140122 dholland Add discussion of ARG_MAX to execv man page. -20140122 dholland Add missing for userland. -20140122 dholland Added sparsefile test program for making sparse files. -20140122 dholland splx() needs to work before curcpu/curthread exists. -20140122 dholland Clarify that proc_remthread requires splhigh. -20140115 dholland Remove VOP_INIT/CLEANUP macros. Use vnode_init/cleanup. -20140115 dholland Make device open/close eachopen/lastclose like vnodes. -20140115 dholland Move vfs-level device ops to an ops table struct. -20140115 dholland Clarify/correct comments pertaining to O_APPEND. -20140114 dholland Reorganize SFS sources. -20131112 dholland In SFS, always provide N{,D,T}INDIRECT macros. -20131112 dholland Reorganize sfsck sources; rework and improve sfsck. -20131110 dholland Don't use uninitialized file permissions in badcall. -20131110 dholland Provide __UNUSED along with __PF and __DEAD. -20131108 dholland Rearrange (and fix) hacks for _exit() returning. -........ It now faults on "0xeeeee00f" if it can't exit. -20131107 dholland Handle TLB pipeline hazards correctly. -20131107 dholland Add some sample/experimental gdb scripts. -20131107 dholland Make the console polling logic not use internal vars. -20131107 dholland Have wchan_sleep assert if holding extra spinlocks. -20131107 dholland Don't use assignment numbers for kernel configs. -20131107 dholland Remove the synch problems from the base system. -20131107 dholland Rename src/user -> src/userland. Seems to be the best -........ choice among a number of unappealing alternatives. -20131105 dholland Disallow EINVAL for "no such process" in badcall. -20131105 dholland Clean up sh's use of exit codes. -20131105 dholland Have testbin/crash check the signal numbers produced. -20131105 dholland Create an array of all wchans for debug purposes. -20131105 dholland Rearranged wchan API to make wchans more like CVs. -20131105 dholland Print the processor ID and version correctly. -20131105 dholland Fix boot on pre-multiprocessor System/161. -20131105 dholland Parallelize the kernel depend logic. -20131104 dholland Add and use memory barrier ops header. Minor impact. -20131104 dholland Rename sfs_inode to sfs_dinode. -20131101 dholland Edit and revise the man pages. Add some missing ones. -20131101 dholland Updated the docs and specs for waitpid. -20131030 dholland Use execvp() in sh. Don't have to type /bin/cat now. -20131030 dholland Provide getenv() and execvp() in libc. -20131030 dholland enter_user_process() now accepts an environ pointer. -20131030 dholland Add quinthuge, quintmat, quintsort tests. -20131030 dholland Added a libtest with common stuff for testbin/. -20131030 dholland Rewrote the .depend-munging script to be readable. -20131030 dholland Use ENOSYS (standard) instead of EUNIMP (which isn't). -20131030 dholland Fix badcall to expect with null status to succeed. -20131030 dholland Don't use unportable function casts in sfs. -20131029 dholland Add a memory leak detection mode to kmalloc. -20131029 dholland Add more kmalloc debugging modes and checks. -20131028 dholland Move the whole-filesystem ops to an ops table struct. -20131028 dholland Use designated initializers for the vnode ops tables. -20131028 dholland Fix the way thread_panic zaps the run queue. -20131028 dholland Moved memset.c to common/ for use in the kernel. -20131028 dholland Mark thread_exit() __DEAD. -20131028 dholland Fix addrspace handling in proc_destroy(). -20131025 dholland Improved kmalloc to support larger kernel heaps. -20131025 dholland Add another kmalloc test, this one of variable size. -20131025 dholland Make printf accept %zd/%zu for size_t. -20130531 dholland Add tests for the threadlist code. -20130531 dholland Fix threadlist iterators again. From Steven Talbot. -20130531 dholland Do thread migration *before* running the scheduler. -20130531 dholland Add some more assertions to kfree. -20130531 dholland Make badcall understand wait-for-any waitpid(). -20130531 dholland Provide a predepend: hook for makefiles. -20130531 dholland Put .depend files in build tree where they belong. -20130531 dholland Fix depends bug in os161.hostcompile.mk. -20130531 dholland Remove getinterval(); replace with timespec arithmetic. -20130531 dholland Use struct timespec inside the kernel. -20130531 dholland Move kern/startup -> kern/main, like it was in 1.x. -20130531 dholland Add "zero" test; checks if the VM system zeros pages. -20130531 dholland Change as_activate() to always activate curproc's AS. -20130531 dholland Provide both thread and process structures by default. -20130530 dholland Fix the scheme for probing LAMEbus device versions; -........ don't require lockstep upgrades for System/161 changes. -20130530 dholland Fix typo in comment, from Saagar Deshpande. -20130530 dholland Add comment warning against borrowing from dumbvm. -20130530 dholland Increase DUMBVM_STACKPAGES so 64K argv blocks will fit. -20130514 dholland Teach sfsck to handle dirs with invalid inode numbers. -20130503 dholland Fix another problem in the inode array in sfsck. -........ Reported by multiple students. -20130429 dholland Fix sfsck bitmap-checking problem. -20130311 dholland Declare panic() and badassert() noreturn. -20130308 dholland Fix fd leak in badcall, found by George Kulakowski. -20130306 dholland Fix off_t printing in randcall, found by David Palmer. -20110427 dholland Fix typo in badcall, from Andy Brody. -20110425 dholland Fix catastrophic bug in sfsck. Found by Jim Danz. -20110420 dholland Add new bigexec test for checking large argvs. -20110319 dholland Use va_copy() in __printf. (At least if available.) -20110223 dholland array.h needs cdefs.h and lib.h. Caught by Amy Tai. -20110127 dholland Fix host-psort build problem caused by glibc on Linux. +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. -20110126 dholland OS/161 1.99.06 released. -20110126 dholland Fix some parallel build problems. -20110126 dholland Rename fs5 test to "long stress test". -20110126 dholland Clarify that struct tlbshootdown is a placeholder. -20110126 dholland Fix randcall makefile to put calls.c in the build dir. -20110126 dholland VOP_OPEN -> VOP_EACHOPEN; VOP_CLOSE -> VOP_LASTCLOSE. -20110126 dholland Name struct spinlock's members splk_*, not lk_*. -20110126 dholland sfs_fs.c -> sfs_fsops.c, sfs_vnode.c -> sfs_vnops.c -20100819 dholland Fix the stray console IRQs problem properly. This -........ requires System/161 1.99.05 or higher. -20100819 dholland Revert start/endpolling hack for stray console IRQs. -........ (But keep the code for masking interrupts.) -20100819 dholland Don't leave the IPI spinlock dangling on a panic IPI. +20160112 dholland in base, reported by Sam Fishman + - In thread_make_runnable, don't send unidle IPIs to curcpu. -20100108 dholland OS/161 1.99.05 released. -20100108 dholland Don't cut corners with relocs in mips-exception1.S. -20100108 dholland Rearrange how curthread/curcpu get defined, so the -........ mips gdb can see curthread. -20100108 dholland Disable BSS zeroing in loadelf, because VM systems -........ should already provide zeroed pages. Make dumbvm do so. -20100108 dholland Add ASST3-OPT optimizing config. -20100108 dholland Add the usermalloc design doc to design/. -20100108 dholland Add the shell's design doc to design/. -20100108 dholland Fix outdated comment in start.S. -20100108 dholland Move clocksleep() decl to . -20100107 dholland Clarify various comments that seem lacking. -20090427 dholland Fix miscommented uio direction constants. Doh. -........ Found by the students... -20090424 dholland Add missing as_activate(NULL) during thread exit. -20090416 dholland Fix err/warn vs. errx/warnx usage in various tests. -........ Mostly from Robert J. Helblin and Peter Salas. -20090413 dholland Use EFBIG, not EINVAL, for "file too large". -20090402 dholland Make sbrk badcall "unaligned negative" really negative. -20090402 dholland Add clarifying comments to struct tlbshootdown. -20090320 dholland Fix DEBUG() so it accepts zero vararg parameters. -20090214 dholland Remove some references to obsolete name "md_usermode". -20090213 dholland Note that wchans don't promise to be FIFO. -20090205 dholland Add missing 'volatile' to spinlock.h. +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. -20090414 dholland OS/161 1.99.04 released. -20090414 dholland Fix typo in kern/sfs.h. -20090414 dholland Fix testbin/psort up so it works adequately on sfs. -20090413 dholland Make sfsck track indirect blocks in the free map right. -20090413 dholland Fix bug where sfsck chokes on size 0 directories. -20090413 dholland Fix case where sfsck can't add missing ./.. entries. -20090413 dholland Add sfsck, simple check/recovery tool for sfs. +20160111 dholland in base + - Have "make clean" in a man directory do nothing instead of failing. -20090402 dholland OS/161 1.99.03 released. -20090402 dholland Fix build of testbin/malloctest. -20090320 dholland Check CURCPU_EXISTS in spinlock_do_i_hold. -20090313 dholland Fix threadlist iterator macros. +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. -20090219 dholland OS/161 1.99.02 released. -20090219 dholland Add missing W* macros with waitpid in testbin progs. -20090219 dholland Work around gcc tailcall bug affecting testbin/crash. -20090219 dholland Fix missing vfs_biglock ops in vfs_getcwd(). -20090219 dholland Fix bad userland declaration of lseek(). -20090219 dholland Fix userland .depend file generation. -20090219 dholland Add join32to64 and split64to32. -20090219 dholland Clarify some comments in the mips syscall.c. -20090219 dholland Make stack frames in assembly code 64-bit aligned. -20090217 dholland Fix some glitches in the shell. -20090210 dholland Fix interrupt level management in trap handling. -20090209 dholland The on-chip timers can't be used for clocksleep(). +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. -20090203 dholland OS/161 1.99.01 released. -20090202 dholland Don't ever migrate curthread to another cpu. -20090202 dholland Use the W* wait macros in the shell. -20090202 dholland Document the W* wait macros. +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. -20090202 dholland OS/161 1.99.00 released. -20090201 dholland Fix some bugs. -20090201 dholland Add an input buffer to the console device. -20090201 dholland Change kernel load address to waste less low memory. -20090201 dholland Implement kernel-side support for the GP register. -20090201 dholland Update man pages for 2.x. -20090201 dholland Remove the built-in copy of make. Too much realism; - it creates unnecessary hassles. Just ship make with - the toolchain. -200901** dholland Assorted major hacking to prepare first pre-2.0 tree. - Multiprocessor support. - Improve organization of source tree. - Add the shell and user malloc to the base system. -20081224 dholland 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 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 Fix wrong comment in lib.h. -20090106 dholland Fix typo in error message in newvers.sh. -20080825 dholland Fix typo in comment in start.S. -20080825 dholland Add curspl assertion to thread_yield. - (Reported by Melissa O'Neill a long time ago.) +OS/161 1.x change log +--------------------- -20050913 dholland OS/161 1.11 released. -20050907 dholland Minor changes for clean build under gcc 4.0.1. -20050321 dholland Add volatile to testbin/ctest. (found by Qicheng Ma) -20050307 dholland Create for vaddr_t/paddr_t. -20050228 dholland Some standards compliance. (found by R.L. West) -20040510 dholland Fix args handling in testbin/tail. (Lukasz Strozek) -20040204 dholland Be more consistent about refcounts in vfscwd.c. +20090115 dholland in base + - Fix wrong comment in lib.h. -20040203 dholland OS/161 1.10 released. -20040203 dholland Support for hosting OS/161 on Solaris. -20040202 dholland Update stdarg.h for gcc 3.x; remove machine/stdarg.h. +20090106 dholland in base + - Fix typo in error message in newvers.sh. -20031227 dholland OS/161 1.09 released. -20031224 dholland Add missing man page for triplesort. -20031224 dholland Fix failed compile in lnet.c, currently a null driver. -20031224 dholland Fix badcall so it doesn't blow up on empty stdin. -20031224 dholland Fix argument handling in bin/ln. (Hassan Sultan) -20031224 dholland Fix link count leak in sfs_rename. (Brian Greenberg) -20031224 dholland Fix silly use-after-free in an SFS mount error path. -20031224 dholland Fix unaligned sections in dumbvm. (Mike Hamburg) -20031224 dholland Change "asst1probs" to "synchprobs". -20031224 dholland Refer to assts by content, not number, where possible. -20031224 dholland Fix some nonsensical but working code in /bin/pwd. -20031224 dholland Update stack assertions in mips/trap.c for 4k stacks. -20031224 dholland Install kernels using their configuration name. -20031224 dholland Clarify some aspects of the locks/CVs API. -20031224 dholland Fix assorted comment typos and glitches. -20030626 dholland Commit the fix for a refcounting mistake in SFS. -20030626 dholland Fix glitch in one of the dup2 tests in testbin/badcall. -20030626 dholland Add missing sized type in mksfs/support.h. -20030626 dholland Fix "make depend" glitch in dumpsfs. -20030626 dholland Fix minor off-by-one error in menu code. -20030421 dholland Fix assertion failure in kernel heap dump code. -20030421 dholland Fix crash in testbin/dirconc. -20030309 dholland Make shell accept being run with argc==0. -20030309 dholland Add support for WNOHANG to shell. +20080825 dholland in base + - Fix typo in comment in start.S. -20030221 dholland OS/161 1.08 released. -20030221 dholland Fix broken hostcompat build with some Linux libcs. -20030207 gwa/dholland Fix broken ASST1 build caused by rushed release. +20080825 dholland in base, reported by Melissa O'Neill a long time ago. + - Add curspl assertion to thread_yield. -20030131 dholland OS/161 1.07 released. -20030131 gwa New assignment 1 problems for 2003. -20030129 dholland Make console device full-duplex. -20030129 dholland Check for short reads when loading executable headers. -20030129 dholland Make rmtest a single standalone executable. -20030129 dholland Make first thread stack also 4k rather than 8k. -20030129 dholland Fix minor VFS bug handling multiple leading slashes. -20030129 dholland Remove code duplication in triple* tests. -20030129 dholland Add triplesort test (like triplemat). -20030128 dholland Make f_test a single standalone executable. -20030128 dholland Add t_ prefix to struct thread members for consistency. -20030128 dholland bzero by words instead of bytes when properly aligned. -20030128 dholland Add memcmp() to libc. -20030127 dholland Minor fixes to parallelvm. -20030117 dholland OS/161 1.06 released. -20030110 dholland Fix bug in setjmp/longjmp. -20030110 dholland Add small explanatory comment to dev/lamebus/emu.c. -20021120 dholland Have configure script provide NM and HOST_NM. -20021120 dholland Merge hostcompat fixes for Mac OS X. -20021001 dholland Avoid undefined C behavior in atoi(). -20020920 dholland Provide string names for mips trap codes. -20020920 dholland Fix handling of boot-time kernel memory faults. +OS/161 1.11 released 20050913 +----------------------------- -20020917 dholland OS/161 1.05 released. -20020913 dholland Created this changelog from CVS log data. -20020904 dholland Cleanup/improvement for testbin/malloctest. -20020904 dholland Add code to shell to do timing of subprocesses. -20020904 dholland Adjust prototype for __time() for hostcompat reasons. -20020904 dholland Add parallelvm and dirconc to the default build. -20020904 dholland Add mode to testbin/crash to fork and run everything. -20020904 dholland Retry certain I/O errors in emufs and sfs. -20020904 dholland Make vfs_close not fail. -20020830 dholland Prohibit slashes and colons in volume names in mksfs. -20020830 dholland _O_RDWRMASK -> O_ACCMODE, per POSIX. -20020830 dholland Shrink kernel stacks from 8k to 4k. -20020830 dholland Merge the code for the 'p' and 's' menu commands. -20020830 dholland Don't use OPEN_MAX in the base system. -20020829 dholland Include a copy of the error strings in the kernel. -20020829 dholland Assert that spl is 0 on syscall entry and exit. -20020829 dholland Fixes and new tests for testbin/badcall. -20020829 dholland Add code and menu command for dumping kernel heap. -20020827 dholland Close current directory at shutdown time. -20020827 dholland Clear bootfs at shutdown time. -20020827 dholland Remove extraneous magic argument from free_kpages(). -20020827 dholland Fix dangling lock bug in emufs. -20020826 dholland Man page fixes for read, write, waitpid. -20020808 dholland Make Ant-32 port mostly work. -20020625 dholland Kernel makefile tweak for stupid makes. -20020618 dholland Fixes to the Ant-32 port. -20020617 dholland Update the (unreleased) Ant-32 port. -20020523 dholland Make matmult exit 1 on failure. -20020523 dholland Fix various forking userlevel tests to wait properly. -20020523 dholland Check for short reads when loading executables. -20020523 dholland Fix bug in tt3 test. -20020523 dholland Some make/build fixes. -20020523 dholland More mips calling conventions fixes. -20020522 dholland Fix bug in new mips exception code. -20020522 dholland Revamp testbin/badcall. -20020515 dholland Various accumulated minor cleanups and fixes. -20020515 dholland New tests: dirconc, parallelvm. -20020515 dholland Add missing V() in lhd driver. -20020515 dholland Fixes for the thread code. -20020515 dholland Tweak mips exception code for gdb's benefit. -20020515 dholland Clean up dumbvm code. -20020515 dholland Initialize mips stacks better, for gdb's benefit. -20020425 dholland Fixes for testbin/f_test. -20020424 dholland Fix kmalloc bug (found by Richard Eisenberg). -20020424 dholland Fix incorrect error codes in testbin/badcall. -20020424 dholland Move stray assert in vfs code. -20020407 dholland Fix off-by-one error in lhd driver. -20020325 dholland Fix memory leak in malloctest. -20020318 dholland Patch for race in thread_exit (fixed properly 5/15). -20020305 dholland Fix spl leak on thread_fork failure. -20020305 dholland Fix for testbin/crash. +20050907 dholland in base + - Minor changes for clean build under gcc 4.0.1. -20020216 dholland OS/161 1.04 released. -20020216 dholland Fix warning in kmalloc debugging code. -20020216 dholland Adjust testbin/badcall to assignment 2 requirements. -20020215 dholland Add cpu_halt() to supplement cpu_idle(), to fix crash. -20020215 dholland Fixes for matmult. -20020215 dholland Fix garbled comment in vm.h. -20020215 dholland Fix prototype of _exit(). -20020208 dholland Fix stack frame of mips __start for gdb's benefit. -20020208 dholland Fix queue bug. -20020208 dholland Fix bug in testbin/{badcall,crash,faulter}. +20050321 dholland in base, found by Qicheng Ma. + - Add volatile to testbin/ctest. -20020131 dholland OS/161 1.03 released. -20020131 dholland Yield more on thread start (OPT_ASST1PROBS only). -20020131 dholland Fix whalemating code to match assignment. -20020131 dholland New asst1 problems for 2002. -20020131 dholland Include fix in mips pcb.h. -20020130 fedorova Adjust tt3 iteration counts/sizes. -20020129 georgi Fix broken mksfs and dumpsfs build. -20020124 dholland Put time() in libc; add __time() syscall. -20020124 dholland Have hostcompat make stdout and stderr unbuffered. -20020124 dholland Add sample optimizing config (ASST2-OPT). -20020124 dholland New tests: dirseek, rmdirtest, triplemat. -20020123 dholland Move matmult2 over original matmult. -20020123 dholland Assert nobody's waiting when destroying a semaphore. -20020123 dholland Add driver for new ltrace device. -20020123 dholland Fix cosmetic bug in hardclock config. -20020121 dholland Support ls over emufs. -20020121 dholland Fix bug in copyinstr/copyoutstr code. -20020121 dholland Fix broken Linux build of libhostcompat. -20020119 dholland Alter dumbvm and loadelf for new toolchain. -20020117 dholland Check for stack overflow during context switch. -20020117 dholland Stop using -O2 with -g for mips. -20020117 dholland More mips calling conventions fixes. -20020117 dholland Correct the inline asm in spl.c. -20020117 dholland Remove machine/inlineasm.h; fold into spl.c. -20020117 dholland Avoid using default make-supplied CFLAGS. -20020117 dholland Fix use of libhostcompat in mksfs and dumpsfs. -20020117 dholland Fix cosmetic bug in configure script. -20020116 dholland Adjust various things for new toolchain. -20020110 dholland Install hostcompat includes properly. -20020110 dholland Various fixes for new gcc (3.0.3) and binutils. -20020104 dholland More man pages. -20020103 dholland Remove excess register saves from mips context switch. -20020103 dholland Move old getcwd to __getcwd; put POSIX getcwd in libc. -20020103 dholland Tinker with tt3 test. -20020102 dholland Change thread_fork so it can return errors. -20020102 dholland Preallocate various things to avoid dying in mi_switch. -20010925 dholland Add a bunch of consistency checks to sfs. -20010925 dholland Fix bug in new panic code. -20010925 dholland Add menu command to panic intentionally. -20010925 dholland Fix bug in emufs. -20010925 dholland memcpy by words instead of bytes when properly aligned. -20010925 dholland Use setjmp() and longjmp() for aborting copyin/copyout. -20010925 dholland Add code for setjmp() and longjmp(). -20010921 dholland Add VOP_KILL (undoes VOP_INIT, which can now fail too.) -20010921 dholland Fix race conditions in vnode reclaim. -20010921 dholland Fix VFS behavior for things like "rmdir foo:". +20050307 dholland in base + - Create for vaddr_t/paddr_t. -20010921 dholland OS/161 1.02 released. -20010921 dholland Revise device config/attach code. -20010920 dholland Standards compliance fixes for strchr/strrchr. -20010920 dholland Fix bug in system(). -20010919 dholland More man pages. -20010918 dholland Changed MAXNAMLEN to NAME_MAX. -20010918 dholland Fix bug in kernel menu pwd command. -20010918 dholland Panic handling improvements. -20010918 dholland Kernel bootup and shutdown cleanup. -20010918 dholland Fixes for testbin/badcall. -20010824 dholland Make config script probe for . -20010821 dholland Changes to queue code for consistent naming. -20010808 dholland Add man pages. -20010808 dholland The shell can now use again, so do so. -20010808 dholland Add explicit support for host-runnable programs. -20010807 dholland Clean up -nostdinc/-nostdlib handling. -20010807 dholland Fix bug in cp. -20010807 dholland New test in testbin/crash. -20010807 dholland Fixes for testbin/malloctest. -20010806 dholland Fix glitch in testbin/badcall. -20010806 dholland New test: randcall. -20010804 dholland Add missing strrchr proto to . -20010803 dholland Clean up ls; among other things, fix ls -R. -20010803 dholland Fixes for testbin/badcall. -20010803 dholland Add memset() to libc. -20010803 dholland Split part of testbin/crash to new testbin/badcall. -20010802 dholland Add comments to testbin describing intended uses. -20010802 dholland Fix testbin/ctest to be large enough to be interesting. -20010802 dholland Fix testbin/sort to be quicksort instead of bubble. -20010802 dholland Various minor testbin fixes/cleanup. -20010802 dholland Add dummy to make porting easier. -20010802 dholland Add dummy to make porting easier. -20010802 dholland Add dummy to make porting easier. -20010802 dholland Add dummy to make porting easier. -20010802 dholland Add dummy to make porting easier. -20010802 dholland Have kfree deadbeef out free blocks. -20010801 dholland Time execution of every kernel menu command. -20010801 dholland Add getinterval() function for subtracting times. -20010801 dholland Print commands as they execute from the command string. -20010801 dholland New test tt3; add atoi from libc to kernel build. -20010801 dholland Add memcpy from libc. -20010801 dholland Fix size_t and add memcpy() to libc. -20010801 dholland Reset mips TLB at boot time. -20010801 dholland Revise kernel menu layout. -20010801 dholland Add tests for arrays, bitmaps, queues, and semaphores. -20010801 dholland Add "reconfig" rule to kernel makefiles. -20010801 dholland Fix queue code. -20010731 dholland Move main.c from kern/thread to kern/main. -20010730 dholland Add kernel menu command to unmount things. -20010730 dholland Add vfs_unmountall() for shutdown time. -20010730 dholland Report mounts to the console as they happen. -20010730 dholland Abolish pointless kernel shutdown functions. -20010726 dholland Add random: device accessible through VFS. -20010726 dholland Add pseudorand device for when hardware is missing. -20010726 dholland Add config support for pseudo-devices. -20010724 dholland Yield randomly at thread start if OPT_ASST1PROBS set. -20010724 dholland Clarify comments in mips exception.S. -20010724 dholland Don't allow calling P() from an interrupt handler. -20010724 dholland Fixes for lser driver. -20010723 dholland More mips calling conventions fixes. -20010626 dholland Add pwd and sync to kernel menu. -20010626 dholland Massive changes to kernel menu UI. -20010619 dholland Change as_copy so it can return error codes. -20010619 dholland Merge bitmap_isset() from sol3. -20010619 dholland Various fixes for new dumbvm. -20010619 dholland Fix overly enthusiastic test in vnode_check(). -20010619 dholland Provide a sketch of the skeleton for doing fork. -20010618 dholland Add asserts to synch code. -20010618 dholland Clean up/clarify syscall entry code. -20010618 dholland New dumbvm supporting multiple address spaces. -20010618 dholland Remove mips dependencies from loadelf.c. -20010618 dholland Add hacks to prevent looping "Unknown syscall -1". -20010615 dholland Merge the kmalloc and kfree from sol3. -20010614 dholland Move kernel menu stuff to its own file. -20010614 dholland Fixes for sfs and vfs layer. -20010612 dholland Add sfs_rwblock to encapsulate sfs_device->d_io(). -20010612 dholland Add lbolt and clocksleep() functionality to kernel. -20010612 dholland Add -W to standard warning options. -20010611 dholland Abolish rcsids. -20010611 dholland Fix memory leak on error in thread_fork. -20010611 dholland Don't panic if kmalloc fails. Add checks. -20010611 dholland Add VOP_MAGIC to vnode ops tables, and lots of checks. -20010611 dholland Add array_setguy(). -20010608 dholland Add random() and srandom() to libc. -20010608 dholland Add some framework for user-level malloc to libc. -20010608 dholland Correct prototypes for read() and write(). -20010608 dholland kprintf synchronization cleanups. -20010523 dholland Allow DEL as well as BS for backspacing in shell. -20010523 dholland Add warning about the consequences of touching paddr 0. -20010523 dholland Fix open count handling on VOP_CLOSE error. -20010523 dholland New test: malloctest. -20010428 dholland Handle multiple leading slashes on pathnames. -20010423 dholland Fix deadlock in vfs layer. -20010423 dholland Fix bug in testbin/dirtest. -20010423 dholland Fix multiple bugs in ls. -20010422 dholland Fix bug in sfs. -20010419 dholland Fix bug in sfs (patch from Amos Blackman). -20010416 dholland Fix fstest code. -20010416 dholland Remove stray debug output from dumpsfs. -20010414 dholland Fix host mksfs/dumpsfs build on DU. -20010414 dholland Makefile fix: build mksfs and dumpsfs by default. -20010414 dholland Fix bug in sfs (found by Dafina Toncheva). -20010414 dholland Fix endianness bug in dumpsfs. -20010414 dholland Do a sync at shutdown time. -20010414 dholland Format depend.mk files consistently. -20010414 dholland Fix memory leak in sfs. -20010413 dholland Allow VOP_FSYNC on sfs directories. -20010412 dholland Detect infinite loop triggerable by uio misuse. -20010411 dholland Fix bug in bitmap code. -20010406 dholland Fix calling conventions in mips asm code. -20010323 dholland Fix multi-sector lhd I/Os (found by Jeff DeSoto). -20010322 dholland Fix bug in comment in pcb.c (found by Jeffrey Enos). -20010319 dholland Make matmult smaller. -20010318 moorthi Fix bug in array code. -20010314 dholland Fix bug in mv (found by Edward Lim). -20010314 dholland Fix bug in testbin/crash (found by Mike Vernal). -20010314 dholland Fix bug in bitmap code. -20010308 moorthi Fix bug in sfs. +20050228 dholland in base, found by R.L. West. + - Some standards compliance. -20010226 dholland OS/161 1.01 released. -20010226 dholland Shell fixes. -20010226 dholland Add a lock to the console device. -20010226 dholland Fix another bug in copyin/copyout code. -20010226 dholland Add vfs_getdevname(). -20010226 dholland Use device name for FSes that don't return a volname. -20010226 dholland Fix two bugs in pwd. -20010226 dholland Make /bin/pwd work in emufs. -20010225 dholland Fix bug in mips trap code. -20010225 dholland Fix bug in mips copyin/copyout code. -20010224 dholland Add appropriate volatile keywords in various places. -20010224 dholland Fix synchronization in placeholder kmalloc. -20010221 dholland Fix bug in CV code. +20040510 dholland in base, from Lukasz Strozek. + - Fix args handling in testbin/tail. -20010208 dholland OS/161 1.00 released. -20010208 dholland Add EBADF to error list. -20010208 dholland Fix specification of VOP_STAT. -20010208 blackman Fix naming of queue functions. -20010208 blackman Driver for lrandom device. -20010207 dholland Check all calls to thread_fork for failure. -20010206 dholland Fix comment in mips/specialreg.h. -20010205 dholland Prevent recursive scheduler calls. (Fixes crash.) -20010205 dholland Make syscall wrapper generation more robust. -20010205 dholland Fix bug in cp. +20040204 dholland in base + - Be more consistent about refcounts in vfscwd.c. -20010202 dholland OS/161 0.99 released. -20010202 dholland Add host-sh (host-runnable version) to sh makefile. -20010202 dholland Add licensing boilerplate. -20010201 dholland Switch from getfilesize() to fstat(). -20010201 dholland Add system(). -20010130 dholland Add strtok() and strtok_r(). -20010129 dholland Add ELF code. -20010111 dholland Fix bug in ls. -20010103 dholland Initial checkin of development tree. + +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. diff --git a/kern/arch/mips/vm/dumbvm.c b/kern/arch/mips/vm/dumbvm.c index 93606d1..cf9d916 100644 --- a/kern/arch/mips/vm/dumbvm.c +++ b/kern/arch/mips/vm/dumbvm.c @@ -126,12 +126,6 @@ free_kpages(vaddr_t addr) (void)addr; } -void -vm_tlbshootdown_all(void) -{ - panic("dumbvm tried to do tlb shootdown?!\n"); -} - void vm_tlbshootdown(const struct tlbshootdown *ts) { diff --git a/kern/include/cpu.h b/kern/include/cpu.h index 994f3c1..cd386ec 100644 --- a/kern/include/cpu.h +++ b/kern/include/cpu.h @@ -74,24 +74,21 @@ struct cpu { * Accessed by other cpus. * Protected by the IPI lock. * - * If c_numshootdown is -1 (TLBSHOOTDOWN_ALL), all mappings - * should be invalidated. This is used if more than - * TLBSHOOTDOWN_MAX mappings are going to be invalidated at - * once. TLBSHOOTDOWN_MAX is MD and chosen based on when it - * becomes more efficient just to flush the whole TLB. + * TLB shootdown requests made to this CPU are queued in + * c_shootdown[], with c_numshootdown holding the number of + * requests. TLBSHOOTDOWN_MAX is the maximum number that can + * be queued at once, which is machine-dependent. * - * struct tlbshootdown is machine-dependent and might - * reasonably be either an address space and vaddr pair, or a - * paddr, or something else. + * The contents of struct tlbshootdown are also machine- + * dependent and might reasonably be either an address space + * and vaddr pair, or a paddr, or something else. */ uint32_t c_ipi_pending; /* One bit for each IPI number */ struct tlbshootdown c_shootdown[TLBSHOOTDOWN_MAX]; - int c_numshootdown; + unsigned c_numshootdown; struct spinlock c_ipi_lock; }; -#define TLBSHOOTDOWN_ALL (-1) - /* * Initialization functions. * diff --git a/kern/include/version.h b/kern/include/version.h index 532d7ec..43f66be 100644 --- a/kern/include/version.h +++ b/kern/include/version.h @@ -34,7 +34,7 @@ * Leave this alone, so we can tell what version of the OS/161 base * code we gave you. */ -#define BASE_VERSION "2.0.1" +#define BASE_VERSION "2.0.2" /* * Change this as you see fit in the course of hacking the system. diff --git a/kern/include/vfs.h b/kern/include/vfs.h index 77b0dc7..b4a6cc3 100644 --- a/kern/include/vfs.h +++ b/kern/include/vfs.h @@ -156,6 +156,13 @@ int vfs_getcwd(struct uio *buf); * vfs_unmount - Unmount the filesystem presently mounted on the * specified device. * + * vfs_swapon - Look up DEVNAME and mark it as a swap device, + * returning a vnode. Similar to vfs_mount. + * + * vfs_swapoff - Unmark DEVNAME as a swap device. The vnode + * previously returned by vfs_swapon should be + * decref'd first. Similar to vfs_unmount. + * * vfs_unmountall - Unmount all mounted filesystems. */ @@ -172,6 +179,8 @@ int vfs_mount(const char *devname, void *data, struct device *dev, struct fs **result)); int vfs_unmount(const char *devname); +int vfs_swapon(const char *devname, struct vnode **result); +int vfs_swapoff(const char *devname); int vfs_unmountall(void); /* diff --git a/kern/include/vm.h b/kern/include/vm.h index fd1b299..abc0cfe 100644 --- a/kern/include/vm.h +++ b/kern/include/vm.h @@ -56,7 +56,6 @@ vaddr_t alloc_kpages(unsigned npages); void free_kpages(vaddr_t addr); /* TLB shootdown handling called from interprocessor_interrupt */ -void vm_tlbshootdown_all(void); void vm_tlbshootdown(const struct tlbshootdown *); diff --git a/kern/thread/thread.c b/kern/thread/thread.c index 6869602..a41dc58 100644 --- a/kern/thread/thread.c +++ b/kern/thread/thread.c @@ -465,7 +465,7 @@ thread_make_runnable(struct thread *target, bool already_have_lock) target->t_state = S_READY; threadlist_addtail(&targetcpu->c_runqueue, target); - if (targetcpu->c_isidle) { + if (targetcpu->c_isidle && targetcpu != curcpu->c_self) { /* * Other processor is idle; send interrupt to make * sure it unidles. @@ -1106,6 +1106,9 @@ ipi_send(struct cpu *target, int code) spinlock_release(&target->c_ipi_lock); } +/* + * Send an IPI to all CPUs. + */ void ipi_broadcast(int code) { @@ -1120,16 +1123,28 @@ ipi_broadcast(int code) } } +/* + * Send a TLB shootdown IPI to the specified CPU. + */ void ipi_tlbshootdown(struct cpu *target, const struct tlbshootdown *mapping) { - int n; + unsigned n; spinlock_acquire(&target->c_ipi_lock); n = target->c_numshootdown; if (n == TLBSHOOTDOWN_MAX) { - target->c_numshootdown = TLBSHOOTDOWN_ALL; + /* + * If you have problems with this panic going off, + * consider: (1) increasing the maximum, (2) putting + * logic here to sleep until space appears (may + * interact awkwardly with VM system locking), (3) + * putting logic here to coalesce requests together, + * and/or (4) improving VM system state tracking to + * reduce the number of unnecessary shootdowns. + */ + panic("ipi_tlbshootdown: Too many shootdowns queued\n"); } else { target->c_shootdown[n] = *mapping; @@ -1142,11 +1157,14 @@ ipi_tlbshootdown(struct cpu *target, const struct tlbshootdown *mapping) spinlock_release(&target->c_ipi_lock); } +/* + * Handle an incoming interprocessor interrupt. + */ void interprocessor_interrupt(void) { uint32_t bits; - int i; + unsigned i; spinlock_acquire(&curcpu->c_ipi_lock); bits = curcpu->c_ipi_pending; @@ -1175,13 +1193,13 @@ interprocessor_interrupt(void) */ } if (bits & (1U << IPI_TLBSHOOTDOWN)) { - if (curcpu->c_numshootdown == TLBSHOOTDOWN_ALL) { - vm_tlbshootdown_all(); - } - else { - for (i=0; ic_numshootdown; i++) { - vm_tlbshootdown(&curcpu->c_shootdown[i]); - } + /* + * Note: depending on your VM system locking you might + * need to release the ipi lock while calling + * vm_tlbshootdown. + */ + for (i=0; ic_numshootdown; i++) { + vm_tlbshootdown(&curcpu->c_shootdown[i]); } curcpu->c_numshootdown = 0; } diff --git a/kern/vfs/vfslist.c b/kern/vfs/vfslist.c index 184e622..9cd2f4a 100644 --- a/kern/vfs/vfslist.c +++ b/kern/vfs/vfslist.c @@ -82,6 +82,9 @@ struct knowndev { struct fs *kd_fs; }; +/* A placeholder for kd_fs for devices used as swap */ +#define SWAP_FS ((struct fs *)-1) + DECLARRAY(knowndev, static __UNUSED inline); DEFARRAY(knowndev, static __UNUSED inline); @@ -160,7 +163,7 @@ vfs_sync(void) num = knowndevarray_num(knowndevs); for (i=0; ikd_fs != NULL) { + if (dev->kd_fs != NULL && dev->kd_fs != SWAP_FS) { /*result =*/ FSOP_SYNC(dev->kd_fs); } } @@ -195,7 +198,7 @@ vfs_getroot(const char *devname, struct vnode **ret) * and DEVNAME names the device, return ENXIO. */ - if (kd->kd_fs!=NULL) { + if (kd->kd_fs != NULL && kd->kd_fs != SWAP_FS) { const char *volname; volname = FSOP_GETVOLNAME(kd->kd_fs); @@ -344,7 +347,7 @@ badnames(const char *n1, const char *n2, const char *n3) for (i=0; ikd_fs) { + if (kd->kd_fs != NULL && kd->kd_fs != SWAP_FS) { volname = FSOP_GETVOLNAME(kd->kd_fs); if (samestring3(volname, n1, n2, n3)) { return 1; @@ -542,6 +545,7 @@ vfs_mount(const char *devname, void *data, } KASSERT(fs != NULL); + KASSERT(fs != SWAP_FS); kd->kd_fs = fs; @@ -553,6 +557,59 @@ vfs_mount(const char *devname, void *data, return 0; } +/* + * Like mount, but for attaching swap. Hands back the raw device + * vnode. Unlike mount tolerates a trailing colon on the device name, + * to avoid student-facing confusion. + */ +int +vfs_swapon(const char *devname, struct vnode **ret) +{ + char *myname = NULL; + size_t len; + struct knowndev *kd; + int result; + + len = strlen(devname); + if (len > 0 && devname[len - 1] == ':') { + /* tolerate trailing :, e.g. lhd0: rather than lhd0 */ + myname = kstrdup(devname); + if (myname == NULL) { + return ENOMEM; + } + myname[len - 1] = 0; + devname = myname; + } + + vfs_biglock_acquire(); + + result = findmount(devname, &kd); + if (result) { + goto out; + } + + if (kd->kd_fs != NULL) { + result = EBUSY; + goto out; + } + KASSERT(kd->kd_rawname != NULL); + KASSERT(kd->kd_device != NULL); + + kprintf("vfs: Swap attached to %s\n", kd->kd_name); + + kd->kd_fs = SWAP_FS; + VOP_INCREF(kd->kd_vnode); + *ret = kd->kd_vnode; + + out: + vfs_biglock_release(); + if (myname != NULL) { + kfree(myname); + } + + return result; +} + /* * Unmount a filesystem/device by name. * First calls FSOP_SYNC on the filesystem; then calls FSOP_UNMOUNT. @@ -570,7 +627,7 @@ vfs_unmount(const char *devname) goto fail; } - if (kd->kd_fs == NULL) { + if (kd->kd_fs == NULL || kd->kd_fs == SWAP_FS) { result = EINVAL; goto fail; } @@ -600,6 +657,43 @@ vfs_unmount(const char *devname) return result; } +/* + * Detach swap. Like unmount. + * + * (Provided for completeness; there is no real need to remove swap + * explicitly prior to shutting down, except perhaps when swapping to + * things that themselves want a clean shutdown, like RAIDs.) + */ +int +vfs_swapoff(const char *devname) +{ + struct knowndev *kd; + int result; + + vfs_biglock_acquire(); + + result = findmount(devname, &kd); + if (result) { + goto fail; + } + + if (kd->kd_fs != SWAP_FS) { + result = EINVAL; + goto fail; + } + + kprintf("vfs: Swap detached from %s:\n", kd->kd_name); + + /* drop it */ + kd->kd_fs = NULL; + + KASSERT(result==0); + + fail: + vfs_biglock_release(); + return result; +} + /* * Global unmount function. */ @@ -623,6 +717,11 @@ vfs_unmountall(void) /* not mounted */ continue; } + if (dev->kd_fs == SWAP_FS) { + /* just drop it */ + dev->kd_fs = NULL; + continue; + } kprintf("vfs: Unmounting %s:\n", dev->kd_name); diff --git a/kern/vfs/vnode.c b/kern/vfs/vnode.c index 374c300..7322707 100644 --- a/kern/vfs/vnode.c +++ b/kern/vfs/vnode.c @@ -129,7 +129,8 @@ vnode_decref(struct vnode *vn) void vnode_check(struct vnode *v, const char *opstr) { - vfs_biglock_acquire(); + /* not safe, and not really needed to check constant fields */ + /*vfs_biglock_acquire();*/ if (v == NULL) { panic("vnode_check: vop_%s: null vnode\n", opstr); @@ -173,5 +174,5 @@ vnode_check(struct vnode *v, const char *opstr) } spinlock_release(&v->vn_countlock); - vfs_biglock_release(); + /*vfs_biglock_release();*/ } diff --git a/mk/os161.config.mk b/mk/os161.config.mk index bc96419..99f5596 100644 --- a/mk/os161.config.mk +++ b/mk/os161.config.mk @@ -96,7 +96,7 @@ # the build. Default is $(WORKDIR)/tooldir. # # INSTALLTOP Staging directory for installation. -# Default is $(WORKDIR)/install +# Default is $(WORKDIR)/install. # # Probably the only reason to change these would be if you're short on # diskspace in $(WORKDIR). diff --git a/mk/os161.man.mk b/mk/os161.man.mk index fb90723..0e3590a 100644 --- a/mk/os161.man.mk +++ b/mk/os161.man.mk @@ -55,10 +55,13 @@ installmanpages: cp $(_F_) $(OSTREE)$(MANDIR)/$(_F_) .endfor +# clean: remove build products (nothing to do) +clean-local: ; # Mark targets that don't represent files PHONY, to prevent various # lossage if files by those names appear. .PHONY: all all-local install-staging-local install-local installmanpages +.PHONY: clean-local # Finally, get the shared definitions for the most basic rules. .include "$(TOP)/mk/os161.baserules.mk" diff --git a/userland/testbin/multiexec/multiexec.c b/userland/testbin/multiexec/multiexec.c index 23adaf5..a7d41c9 100644 --- a/userland/testbin/multiexec/multiexec.c +++ b/userland/testbin/multiexec/multiexec.c @@ -174,8 +174,11 @@ spawn(int njobs) for (i=0; i