elks-enhanced
public
Read
Owner: themaster
Branch: master
Commits: 6893
Updated: 2026-04-19 00:15
Git CLI clone URL
git clone https://www.xt-emporium.com/git/elks-enhanced.git
Fullscreen desktop URL
Code
Commits
History
Branches
Bug Reports
Discussions
Compare
Settings
elks-enhanced
/
Documentation
/
historic
/
RELNOTES
File editor
ELKS RELEASE NOTES ~~~~~~~~~~~~~~~~~~ VERSION 0.0.89-PRE1 NOTES ------------------------- * Added Russian FAQ to documentation. * Patched Makefiles to enable SiBO port to compile. * Spellchecked CHANGELOG using British English dictionaries. * Updated TODO document to reflect targets for various releases. VERSION 0.0.88 NOTES -------------------- * Updated include/autoconf.h to match `make defconfig` results. * Improtant bugfix to 0.0.87 Makefiles included, so new release made to minimise exposure to that bug. VERSION 0.0.88-PRE1 NOTES ------------------------- * Removed requirement for compile.h and version.h headers. VERSION 0.0.87 NOTES -------------------- * Fixes in V7 sleep-wake affected areas. * Added TCP/IP, SLIP support. * Added semaphores. * Upgraded "menuconfig" to the one used by our big brother. * Rearrangement of documentation. * New keymap system. * Changes in nano and unix sockets to use semaphores. * General source and makefile rationalisations. * Code optimisations to reduce size. * Updated Arnaud Launey's email address. * Fixed various bugs in `make dep` and `make dist` commands. * Many, many more small bug fixes. VERSION 0.0.87-PRE1 NOTES ------------------------- * Added missing "### Dependencies:" tags to several Makefiles. * Added `make tar` and skeletons for `make rpm` and `make deb` to create relevant distribution atrchives. VERSION 0.0.85-PRE3 NOTES ------------------------- * Reformatted and spellchecked various documents. * Prepare for writing of user-mode ANSI/VT-100 driver. * Added %o and %u types to printk() and redefined %d as signed. * Updated strace.h and strace.c so all system call types are printed correctly, also added additional common parameter types to table. * Fixed bug where unknown syscall silently vanished. * Found a panic() using a bad swear word, so changed it... * Added required functionality to enable processes to obtain details needed to configure networking. * Made /dev/tcpdev return EBUSY if used. * Fixed bug in sleepwake.c where pointer was being decremented instead of value it pointed at. * Rationalised elks/Makefile ready for standardising rules. * Unfolded prototype rules in Makefiles. * Patched ELKS CVS source to compile for SiBO architecture. * Prevented header files from being included more than once. * Changed nano and unix sockets to use semaphores now we have them. VERSION 0.0.85-PRE2 NOTES ------------------------- * Reduced length of ltype because of stack limitations. * Merged in TCP/IP code. * Implemented do_mknod(). * Fixed semaphores. * Rationalise arch/i86/config.in to enable `make menuconfig` to work. * Update scripts/Configure and scripts/Menuconfig to version used in Linux 2.4.5 source tree. * Implemented inet_select(). * Updated documentation to refer to vger.kernel.org instead of vger.rutgers.edu (which no longer exists). * Renamed all configuration variables to use CONFIG_* format names. Full list of changes made is in CHANGELOG. * Added DVORAK keyboard layout. * Revamped keyboard system to make it easier to add new layouts. * Optimised character queue code. * Changed tty code to keep settings after tty_open(). * Added support for 57,600 and 115,200 Baud to serial driver. VERSION 0.0.84 NOTES -------------------- * Mainly new V7 style sleep-wake mechanism. VERSION 0.0.83 NOTES -------------------- * SiBO keyboard fixed by Simon Wood. * Inode problems fixed. * ssd driver fix. * suid/sgid support added by Mario Frasca. * Addition netboot code by Christop Plattner. * Made 64K buffer cache an option. * Added raw move for keyboard for games use. * Added support for interrupt chars to serial code. * Added Swedish keyboard map. * Fixed select code for descriptors file when more than seven descriptors used. * Fixed socket disconnection code so nano sockets now work with nano-X. VERSION 0.0.82 NOTES -------------------- * Update to irq handling code which allows a parameter to be passed to the handler contributed by David Murn. * Code optimisation of filesystem. * Merge of code for booting ELKS on the SiBO (Psion series 3 Sixteen Bit Organiser) architecture. VERSION 0.0.81 NOTES -------------------- * Fixed serious bug in inode lookup code which caused problems with mount. * Replaced the bulky timer mechanism with a much simpler one. * Merged in code that allows the kernel to be built and booted from a ROM contributed by Christian Mardmuller (chm@kdt.de). VERSION 0.0.80 NOTES -------------------- * Many more fixes to filesystem by Thomas G. McWilliams. * Fixes to filename length and fchown() by Blaz Antonic. * Fixed map_buffer() code which did not unmap buffers. * Added utime system call. * Fixed code which spins down floppy drive motor. * Latest version of ramdisk driver by Blaz Antonic. * Removed unused features from kernel. * Added full features to kill(2) system call. VERSION 0.0.79 NOTES -------------------- * Many bug fixes to filesystem by Thomas G. McWilliams. * Fix to exec time memory allocation by Greg Haerr. * Reduction in size of various data structures. * Addition of many new data types to make code cleaner. * Major cleanup of signal code. * Fix of bug which prevented boot/root disks working. * More CONFIG options. * Code optimisations to reduce size. VERSION 0.0.78 NOTES -------------------- * Updated ramdisk driver by Blaz Antonic. * Byteorder functions added to make romfs compile. * Build system revised so that several architecures can be supported, by Simon Wood. * Signal code updated and cleaned up. Children now send SIGCHLD to parent when they exit() * Basic pseudo tty support added to support improvised nano-X terminal program. * Socket code heavily updated including unix socket layer under development and working nano sockets for local communication. * Fixes by Greg Haerr for memory allocation, forking, select and object file sizes. * Update to the direct console driver to support more complete ANSI features, and console beep, by Greg Haerr! * Updates to tty code making it cleaner and fixing behavoir. VERSION 0.0.77 NOTES -------------------- * Added support for termios baud rate control, non-blocking IO on ttys, and improved select code so that nano-X can run. * Added support for virtual console locking for graphics mode. * Added support for console signals ^C and ^Z. VERSION 0.0.76 NOTES -------------------- * Added support for signal(2) and signal handlers. Currently no masking or blocking is supported. * Fixed code for select which now handles timeouts correctly, and works on the tty driver. This fix included a re-write of the low level context witching code so that timeouts worked properly throughout the kernel. VERSION 0.0.75 NOTES -------------------- * Optimised request code to make it smaller and more efficient. * Added stub for the meta device driver to support user space device drivers. * Latest version of serial driver from Blaz Antonic which adds early support for serial driver config ioctls. * Incomplete code to support shared libraries. * Cleaned up debugging output macros. * Fixed init code to launch init with valid args. VERSION 0.0.74 NOTES -------------------- * Fixed trucate code in minix filesystem. * Patch to fix bugs in boot code by Riley Williams. * Latest updates to 286 pmode code. VERSION 0.0.74-pre1 NOTES ------------------------- * Fixed bios console so it now works. * More fixes and tweaks to serial driver so now serial console support works. * Latest versions of lp and directhd driver contributed by Blaz Antonic. * Major re-write of config scripts by Riley Williams. * Various fixes and tweaks. VERSION 0.0.73 NOTES -------------------- * A number of bugfixes and tweaks by Simon Weijgers. * Added preliminary signal support. * Some tweaks to serail code which now works in both directions. VERSION 0.0.73-pre2 NOTES ------------------------- * Updated menuconfig from Linux 2.1.113 (page down problem corrected). * Introduced more Documentation/ changes (spelling fixes, French faq update, suppression of Documentation/template). * Added "patch" for colorized printk. * Also clean up Makefile dependencies, thanks to Arnaud Launay <zoro@mygale.org>. VERSION 0.0.73-pre1 NOTES ------------------------- * Added patches for French and German keyboards. * Added patch to correct menuconfig parsing errors, thanks to Matthew D. Pitts <mpitts@suite224.net>. VERSION 0.0.72 NOTES -------------------- * Added patch which adds fchown to simplify login. * Added patch to docs files, and scripts. * Added David Murns patch to add support for MS-DOS EXEs, only partially implemented yet. Also a few other simple patches, including a new top level target in the Makefile, called boot which creates a boot image for dosemu. * Added patch by Patrick LAM to fix inode corruption bug. Kernel is now much more stable. * Added code for pipes, which seem to work, but have not been heavily tested. * Fixed bug which meant that forked processes did not inherit files correctly. VERSION 0.0.71 NOTES -------------------- * Added new non-working bios console from David Murn. * Added latest patch to directhd driver Alastair Bridgewater. * Added patch to make menuconfig so it now works from Vincent Zweije. * Added new working bios console from Pat Lam. David Murns version moved to bioscon.c.dmurn. * Added David Murns ansi colour patch. * Added additional colour patch from s.weijgers@net.HCC.nl * Added assortment of small changes by Alastair Bridgewater including a new smaller version of restore_flags(). * Added a patch to cleanup the socket code sent in by s.weijgers@net.HCC.nl. * Added Alastair Bridgewater's protected mode code which does not work correctly yet, but is included for reference. * Sorted out arch/i86/include as a symlink to include/arch, and cleaned out a few old files. VERSION 0.0.70 NOTES -------------------- * Added latest version of directhd driver which should now work. * Fixed partition code so that it is included. Renamed BIOS HD devices from hda.. to bda.. * Put in patch by Michael.Mueller4@post.rwth-aachen.de that fixes scroll echoeing in the console driver. * Changed some of the irq code so that if CONFIG_XT is specified, only support for 8 IRQs is compiled in. * Fixed bug with initialisation of first_inode in fs/inode.c. * See comments in mount_root() in fs/super.c for details of a bug I have not been able to find, which causes the kernel to lock up. * Added new kernel/signal.c with the start of the sys_kill code. (Work in progress) VERSION 0.0.69 NOTES -------------------- * Added Blaz Antonics directhd driver which currently supports IDE drives. This code is untested. Do not use it on a disk you cannot afford to lose. * Added Erik ???'s patch to the console driver for hercules cards, and two other small fixes, on which disables memorycheck on C-A-D. * Added Rob de Baths patch which allows a single boot/root floppy to work. VERSION 0.0.69-pre2 NOTES ------------------------- * Fixed syscall calls so they no longer corrupt si and di. * Changed kernel code so it makes heavy use of register variables for pointers. The has reduced the size of the kernel by more than 3K. * Changed code again so register is now used on function parameters. The kernel is now a futher 3k smaller. * Removed some more unused code from the filesystem. VERSION 0.0.69-pre1 NOTES ------------------------- * Added support to mem char device for a ps command to read the data structures from kernel memory. * Fixed a bug in the default lseek that was causing mkfs to break. * Fixed a really evil bug in wait4. Shells may now work. * Fixed inw. * Changed terminal ioctls to POSIX version. * Added patch to Makefiles to allow optimisation flags to be included. * Added support for foreign keyboard layouts - this is not yet entirely correct as I don not have access to all keyboards. If you spot a problem with your keyboard, please report it. * Fixed terminal code to accept <CTRL>-D. * Patched build.c so it can now build kernels of Sparc, and hopefully other non Intel endian processors. VERSION 0.0.68 NOTES -------------------- * Most of the timer bugs should now be gone. * Fixed reported number of harddrives. * Put in select code as converted from Linux by Patrick Lam. * Made a change to malloc code to remove hole[1], which is below the kernel code in RAM. Now all user memory is above the kernel. This patch as described by Alan Cox removed his occurence of the timer bug.. * Added the stack backtrace to panic, and the code to redirect the kernel if it gets restarted - no more cryptic "unable to get timer". Removed old verbose code from irq.c. Patch submitted by Jay Kulpinski. * Put in support for TCGETA and TCSETA ioctls in the tty code. * Fixed small bug in irq.c that reported the irq pointer for unexpected irqs instead of the irq number. * Re-wrote some of the code that manages copying to and from user space. Some code reduced. New verified_memcpy...() functions now used instead of using verify_area() separatly. * Added Blaz Antonic's new more generic probing code for floppies. Got rid of the bufseg parameter to save space. * Added and fixed Blaz Antonics changes to lp driver so it now uses the BIOS to find out where the ports are. * #ifdefd out the immediate bottom half and its run queue as nothing uses it. * Removed some redundant code from schedule(). * Cut down ll_rw_block so it only handles single block requests, which is okay, as this is all it was doing anyway. Cut out lots of other code related to request. Code now panics if it can't get a request. * #ifdefd out the task queue code as nothing was using it. * Added some support to tty code for non canonical mode, and non-echoing mode. Currently minimal support for vi only. VERSION 0.0.68-pre5 NOTES ------------------------- * This really should fix at least one problem now. (The last one didn't work because of a typo). VERSION 0.0.68-pre4 NOTES ------------------------- * Another very small change to arch/i86/lib/bitops.c. VERSION 0.0.68-pre3 NOTES ------------------------- * Very small change to arch/i86/lib/bitops.c to put back in the old code. VERSION 0.0.68-pre2 NOTES ------------------------- * Integrated Shane Kerr's time code patch. This may solve the timer bug. VERSION 0.0.68-pre1 NOTES ------------------------- * Removed lots of code from fs using the BLOAT_FS #ifdef. * Fixed infinite loop in buffer.c. * Added base level socket code. * Changed code that uses save_flags/restore_flags so they use an int instead of a long, and saved several bytes!! * Fixed bug in lp.c pointed out by Patrick Lam. * Re-sorted the code that deals with timer. Timer is now stopped, the table is initialised, the irq is requested, then the timer is started. * Added code so that BIOS irq 0 routine is called every five ELKS interrupts (100Hz). The means BIOS is called at 20HZ which is close to the 18.2Hz that the BIOS needs. * Removed references to need_resched and can_tswitch as they are currently unused by the scheduler. * Removed redundant code from do_fork(). Added panic to find_hole as all code that called find_hole panics if it returns NULL. Added code so that split_hole checks hole is too big to reduce wasted code elsewhere. * Cleaned up some excessive boot time messages, mostly from doshd. * Put workaround for compiler bug in the end of init_task(). VERSION 0.0.67 NOTES -------------------- * Changed Makfile to make include dependencies location independant. * Fixed floppy.c so that it it is configured in there is no link error. * Fixed bug in fs/buffer.c which was making get_free_buffer() wait indefinitly and corrupting the filesystem. * Added Rob de Bath's patch to force use of syscall.dat. * Added Blaz Antonic's lp driver. Tweaked it to make it more compact, and fix errors. * Added module code. * Fixed problem with ioctl trying to return long int. * Fixed kernel include file in linuxmt/ and arch/ directories so they can be linked to from /usr/bcc/include, and bcc will still work. * Changed tty code to speed up and remove redundant code and arguments. * Added required irq's to irq table code and removed useless unimplemented ones. * Took unused field Console.InUse out of the direct console code. * Added CONFIG_DCON_VT52 to allow VT52 console support to be left out to save space. * Removed several functions from lib/string.c to save space. * Added Shane Kerr's patch to implement time functions. * Fixed backspace with <TAB> bug * Added heavy debugging output to try and solve the "unable to get timer" panic problem. VERSION 0.0.66 NOTES -------------------- * Removed unused functions print_bufmap_status(), refile_buffer(), set_writetime() taska(), taskb(), interruptible_sleep_on(), sys_uname(), sys_sethostname(), GetQueue(), SetLeds(), get_request_wait(), and unused global variables busy[] busy_wait force_bioshd blksize_size[] read_ahead[] and hardsect_size[]. * Fixed rs_probe() so serial ports are now correctly probed, and started work on a full serial tty driver. Written interupt service routine, + routine to receive character into the chq. Writing to serial now works, but the interrupt service routine required for reads is currently not called when characters are sent. Why anyone? * Altered tty code so that tty driver inserts \r before \n, rather than it being done in the console and serial drivers directly. If anyone thinks this is the wrong way round, please let me know, together with your reasons. * Implemented Blaz Antonics change to speed up floppy probe. * Added code to doshd_release() so that floppy changes don't cause corruption from old buffers. * Small change to stack_check() %d changed to %ld for t_endbrk. * Added a simple ramdisk driver which can access up to 8 64K ramdisks. See Documentation/ramdisk.txt. * Re-organised the way the debugging macros work, so they now have paramater numbers. This cut out 2656 bytes of initialised data. PATCHES BY Matthew Kirkwood (weejock@ferret.lmh.ox.ac.uk) * I am going through these implementing one at a time as they are against an old version. * Patch to crt1.c to cope with the possibility of an odd number of bytes in kernel BSS. * Added Memory character device to support /dev/zero, /dev/null and /dev/full. This has been fixed by me so it now works. * New faster version of find_first_zero_bit(). * Other small cosemetic or code reduction changes. VERSION 0.0.65 NOTES -------------------- * Clean up patch to doshd.c by Blaz Antonic. Fix bug in the dma_avail code. * Add CONFIG_FS_RO config option which allows all filesystem write code to be removed from the kernel, making root mount read-only and saving huge ammounts of kernel space. * Removed unused syscalls truncate(2) ftruncate(2) statfs(2) utimes(2) * Added the doshd.c patch adding ioctl GETGEOM to support fdisk, by David Murn. * Fixed sys_ioctl() so that ioctl now works correctly. fdisk now reads partition tables correctly on my test machine, but I cannot currently test its writing capability. * Added Blaz Antonic's second patch which properlly fixes autoprobing, especially for 1.2Mb drive users, and adds the capability to hard code floppy type. * Add CONFIG_XT option, which currently does nothing. VERSION 0.0.65pre1 (patch release) NOTES ---------------------------------------- * Very quick and easy two line patch to fix floppy autoprobe. VERSION 0.0.64 NOTES -------------------- * Further fixes and code reduction to block_dev.c. * Fixed the way the system_utsname structure is implemented. Now no files should use the information in version.h, but should instead use the appropriate entry in system_utsname. * Added two new configure options so that floppy or HDD code can be left out of doshd.c, the BIOS device driver. * Re-integrated Chad Page's patch to doshd.c which was introduced in 62 but left out of 63, with a bug fix which solves the problems caused when an XT pretends it is an AT. * #if'd out some unused code in doshd.c (revalidate function) to save about 400 bytes, added #ifdef's for the floppy and HDD options. * Removing HDD support frees up 2K of code space!! * Minor bug fixes in fs code involving map_buffer()/unmap_buffer() use. VERSION 0.0.64-pre1 (internal) NOTES ------------------------------------ * Fixed bug in FULL_VFS support (second try, lost 1st one). The filesystem type check in sys_mount uses a local type string now. Needed for get_fs_type. * Changed wait_for_keypress to blocking. Fixes PRESS RETURN in mounting root during boot. * Integrated my patches based on 0.0.63pre1 with final release for 0.0.63 * Further ported ROMFS, compiles and mounts.. though still not useable. VERSION 0.0.63 NOTES -------------------- * Some tweaks to make config including adding help. * Removed the following functions with "#if 0..": fstrlen, puf_fs_word, print_tasks, sys_ni_syscall, sys_setregid, sys_setreuid, sys_getpgid, sys_getpgrp, sys_getsid, sys_setgroups, sys_getgroups, sys_uname, sys_sethostname, sys_gethostname, get_chrfops, unregister_blkdev, unregister_chrdev, as none of them were implemented. This reduces the kernel code by 2000 bytes. * Removed about 150 bytes of code which did nothing from cp_stat(). See comments for details VERSION 0.0.63-pre3 (internal) NOTES ------------------------------------ * Integrated pre1 patch into main kernel sources so make config, multiple filesystem support, and the beginnings of romfs are now there. * Remove lock_buffer() function and replace with inline code as it is only used once. * Remove size parameter from bread() and getblk() as for both functions size is always 1024, and cannot be anything else. This saves about 300 bytes. Also remove paramater from find_buffer() and get_hash_table(). * Large changes to blk_rw() to make file access to block devices work Bugs were caused because the function misused the bh_data field of a buffer bh_data is only a valid pointer AFTER map_buffer() has been called. This code has been tested slightly and appears to work. VERSION 0.0.63-pre2 (internal) NOTES ------------------------------------ * Backed off change made to arch/i86/kernel/bios16.c as it caused setup data to be corrupted. * Backed off change made to arch/i86/drivers/block/doshd.c as the new code did not work on any test machines. Code is now very similar to pre0.0.61A. VERSION 0.0.63-pre1 NOTES ------------------------- * Added the make config to the kernel tree. It should allow easier configuration of the kernel. * Did some cleanups/preparations for multiple filesystem support and root devices other than minixfs. * Started porting ROMFS from linux to ELKS. It is in a very premature state, meaning, it doesn't link yet. VERSION 0.0.62 NOTES -------------------- * There are some slight kernel tweaks, although the main diff. is that the rootdisk now uses Alastair J. Riddoch's userland sources. Note that there is a data segment corruption bug that hits the init code, so this kernel can be considered buggy. VERSION pre0.0.61A NOTES ------------------------- * This is a bug-fixed version of 0.0.59, and should be the most stable kernel yet[*]. It turned out the multitasking bug was a feedback bug in the console driver which only crops up in VC's, so commented that out and fixed things up a bit. Also, after every read/write schedule() is called to make sure multitasking is quite smooth. [* - Okay, it's not *that* stable :) ] * I still haven't tested it outside of dosemu, so YMMV... :) VERSION 0.0.59 NOTES -------------------- (crunch) * The sound you just heard was ELKS' memory requirements (not code size) being scrunched. Without init, you can now run sash and small utilities like 'cat' in 256K of memory, and a whole lotta sashes in 384K. (Note that that may go up 32-48K in .60 though, if I implement kernel stacks outside of DS) * What I did was put the setup.S stuff and the 2-sector buffer for doshd lower in the first 64K, and open up about 48K below the kernel loading area. * I also implemented shared code segments, and a VERY crude version of chmem. (found in elkscmd/chmem. It's really really terse though :) * Also, it turned out that the kernel was functional with 1K kernel stacks, so I was able to shrink that down and set the process limit to 16. * I also put in L Saku's memmove patch (thanks for the quick response!) - there are still a few speed opts I'd like to get in, but I wanted to get 0.0.59 out quickly (especially after trying to get outside kernel stacks working, which turned out to be futile.) * Also, thanks to James Wells for pruning the directory tree... VERSION 0.0.58 NOTES -------------------- * What a release... there are so many changes I don't think I can remember them all! The kernel is a lot more stressed now BTW (more processes, more memory use, etc) so there may be more crashes. However, for the same tasks I think .58 is more stable because of a couple of major bug fixes. * VC support now mostly works - some MDA support added but there's a screen garbage problem right now, so it's not too useful. The init/login sources that Alastair Riddoch (sp - it's late :) have been changed to use all three virtual consoles! (Yes, you can now have 3 logins on an XT :) * I've banged on the doshd and fs code to make hard disks and larger (in terms of files) partitions usable. (I don't like the inode.c hack though). * I've fixed the mount code to make it work for now, although I'm going to reorganize the code in the libraries and remove the mount type from it. * The timer is no longer set to 100 times/sec, because I suspect that might have been causing some floppy timing problems on some systems (no confirmation though, and it can be turned back on) I've also 'covered up' all of the error messages unless it's hit MAX_RETRYS. * In arch/i86/kernel/system.h, replaced hard coded 640K with a check in the setup block. * Whoops! wait4 can only have three parameters, and we only use status anyway :) * This is pretty much the feature set I intend for 0.01, with a couple of more features added. There's a lot of fine-tuning left to be done before then, since it's now a bit more ambitious than before (i.e. more features :) VERSION 0.0.57a (internal) NOTES 4/22/97 12:10AM -------------------------------- * Ayeee... I did a lot of hacking tonight :) I worked on the tty layer some more (still not done, but we now handle output too), and in the process of debugging things found a 'better' way to do the queue stuff (instead of having a head and tail, we now have head and length. This was *much* easier to implement :) * Combined with some other cuts, .57a is pretty close to .57 in size, which is nice. My worry right now is about how much the queue stuff will affect performance on an XT - I think I can counter it, but then I'll be worried about how much space the changes will take (I can't win!) * I've fine-tuned sash to use less stack and memory, so it should be much more stable now. * Added CAD stuff to keyboard.c, but untested on virtue of it being 12:30AM last night :) (.58 note: I don't think it works, but you can try the /bin/reboot program out!) VERSION 0.0.57 NOTES -------------------- * Started work on the tty driver - backspace actually works now! I haven't done anything with the arrow stuff yet, since I need to figure out the best way to deal with them (the keyboard driver already converts it to VT52 escape sequences - I suspect handling those is readline's job) There's a lot of work left to be done on the driver though, and the output interface hasn't even been touched yet! * Interestingly enough the rewrite actually made things a few hundred bytes smaller - a non-strace kernel is ~63,900 bytes now, although that'll grow when ntty.c is fleshed out more. * I also hacked up sash a bit more - the crashes involving vfork were caused by using the system() library call which uses vfork() which dosen't exist (I tried to implement it, but couldn't get it right darnit!) * I also found a whopper bug in the minix/namei.c stuff... name comparisons weren't being handled right (comparing R to RELNOTES matched for instance) I fixed this with a 2-line hack to namecompare (assuming that the files can't match if the name of the file on-disk isn't null-terminated at the same place the other name is :) VERSION 0.0.56 NOTES -------------------- * Lotsa bug fixes, but there are still a lot more to be done. * Fixed sash 'bug' in cp which made it overrun it's stack (it allocated 8,192 bytes - okay in regular Linux but not here :) * Implemented stack checking (relative to current bss) whenever a syscall is made. Shouldn't slow things down *too* much, since it's a very short routine. If the stack grows too long, sys_exit is called immediately to kill the process. * stat() now sets the file size properly (it didn't copy it over) * ls in sash now prints sizes properly. * Wrote a six-line implementation of sys_rename. It probably doesn't do it the right way, but we don't have space to write another big function or two... :) So, I decided to just call sys_link and if that works sys_unlink the old file. * sys_vfork has been mapped to do_fork. I don't think this works right. (If the parameters are long enough, sash chooses to do vfork!) TODO: Change the stat+inode stuff to match to save code space) VERSION 0.0.55 NOTES -------------------- * The drivers directory has been rolled into the arch/ directory, and I've started work on paring down the kernel to run under DOS (it'll be released when it's done :) * I've made some tweaks to the keyboard driver, which makes it a bit more like a real tty (although backspaces still aren't handled right) * sash is now the default shell... I've mostly gotten it to work (added a few fflush-es & stuff) Hopefully we can use this to figure out everything else that's borken :) VERSION 0.0.54 NOTES -------------------- * The fmemcpy routine is now in assembler, and makes the entire kernel *MUCH* faster on my test IBM XT! fork is now much faster, and '/bin/cat RELNOTES' is much faster and more even now. * I worked on mkdir() some - it's not finished but it won't cause a panic anymore :) * I added a print_regs() function which safely prints out all current registers (except ss), so we can check what the registers are just before we have a failure. VERSION 0.0.53(.1) NOTES ------------------------ * I've put together a usable version of sys_brk() so malloc in libc will now work correctly. As a result the POSIX-style readdir() routines now work. minish (not uptodate with what Stephan has done) has been changed to work with the `new' libc readdir functions... * I also fixed the doshd.c bug, and ELKS now works on 360K disks again. (I suspect the bug predates bug reports though). Instead of going to the next track/head it was going back one sector, which was bad. * minish unpacks into the tests/ directory, along with a new makefile. * Optimization is turned off, since there appears to be something else wrong with it. VERSION 0.0.52copt1 NOTES ------------------------- * This is identical to 0.0.52, except that the makefiles are changed to use bccopt. The kernel is 1300 bytes smaller, and should be faster as well as a lot of the instructions optimized out are redundant. * A new rootdisk image is provided so that you can check out the effects of the optimization. * Special thanks to Gero who rewrote/fixed the copt optimizer to make it work effectively with bcc! VERSION 0.0.52 NOTES -------------------- (Note: the kernel looks for /bin/sh rather than /sbin/init!) * I have a very simplistic group of readdir functions in here. They're not finely-tuned, but they work with the minish which is included. They're not POSIX-compliant either, and I'll probably work on a different interface (don't expect open/closedir in 0.0.53) for future versions. * do_exec() now corrects the pre-built stack so parameters are passed correctly (minish can now call programs with parameters...) I tried to do execve, but I didn't get it to work right before my patience ran out, and it added 3-400 bytes to the code anyway :) * I also tweaked a couple of things in the fs/* - sb->s_flags is now 16-bit, and I did a little bit of tightening in fs/inode.c... the next thing will be to exorcise inode.c's hash tables. * Special thanks to Christoph for the new memcpy_*fs routines, and Stephan for the enhanced version of minish.c which I worked on for Linux/8086 0.0.52. * Don't forget to copy the files in linux.86/patches/libc.syscall to your libc's syscall directory, and rebuild your libc again... be ready to do it for 0.0.53 too :) VERSION 0.0.51 NOTES -------------------- * This version includes the first version of minish, the "World's Smallest Shell" It executes what you tell it to do, and that's about all it can do... basically it's to test the ability of fork/exec/wait/exit at this point, and it took a while to get the kernel to do *that* right... * I had to implement sys_exit() and sys_wait4() (barely), and I'm not sure I got exit right, and I really don't have wait4 right at all (it only remembers 1 exited process!) * Also, in the next kernel series (0.1.x or 0.2.x), I'm considering rewriting some parts in assembler, which would replace the C versions if they exist... the kernel is now about 65,050 bytes, which is Way Too Big if we want to put things like signals in here... VERSION 0.0.50 NOTES -------------------- * File writes (at least sequential ones) now work! There are still a couple of bugs that I don't like (file permissions aren't set right, etc), but writing now seems to work correctly (after fixing quite a few bugs) * The bitmap code is quite different now, mostly because I thought it was buggy because of another problem (I wish bcc checked types going into functions...) * There are still quite a few bugs to fix, but hopefully the file write feature will be useful. * I changed the code on the rootdisk to read /sbin/ txtfile and write it to /newfile. This appears to work okay except the file permissions are wrong, and it will perpetually be unchecked afterwards (those were 'minor' bugs to me, compared to how many there were before :) VERSION pre-0.0.50 (not released) NOTES --------------------------------------- * I've been working on the file write code (which was completely borken before). I had to write the find_first_zero routine, which I'm not even totally sure works right, but looks okay. To get this far, I had to overcome what appeared to be compounding bugs. * I've fixed enough bugs so that it *looks* from the kernel standpoint that everything's okay. There were quite a few bugs - I'll see if I can't make a diff so I can list them all! Right now the directory code still looks broken. * At this point I'd like to say 'thank goodness for dosemu and disk images!' - if it weren't for those I'd probably have had a much tougher time getting this far. * BTW, make clean the kernel after changing the strace option. process.c does not recompile for some reason after changing it. Should fix that for 0.0.50... VERSION 0.0.49a NOTES --------------------- * This pretty much does what I said I'd do for 0.0.50, but something tells me that I haven't done enough to bump up the version number... * doshd now reads/writes from 0x0800:0x0000 (in other words, 32K :) I also am now loading setup at 8K, assuming that it won't get overwritten there. If I've screwed up here, I'm gonna have to think of something else though. * The keyboard_read() routine has been optimized a bit and moved into xt_key.c. Still no wouldblock or ^C handling of any sort though. VERSION 0.0.49 NOTES -------------------- * Keyboard support should now REALLY work, since I was able to make xt_key.c and dircon.c work together. I tested it under my P/133 with and without dosemu, and on a 5150... it will hopefully work on most other systems now. * 'non-blocking I/O' is not handled differently than regular I/O yet though, and wait queues for good multitasking aren't implemented yet. That's for 0.0.50 :) * Also, I changed the way buffers are unmapped so that in a straight file read, the indirect block and the file data don't keep swapping in and out... it was fine under dosemu on my P/133, but the 5150 slowed down A LOT when it went into the indirect block as it copied 2K every sys_read. * I think the real problem is that the fmemcpy code makes about 4,000 call/ret sequences to copy those two buffers. With each call/ret sequence eating up at least 36 cycles, that's a good 120,000 cycles we're wasting. * In addition, I made the first part of the inode structure match that of the minix inode, shaving off some more memory. Note that group comparisons *might* be borken now because of bcc bugs, although I just thought of that (I'll fix that in 0.0.50 too :) * This kinda makes it a bit more minix-fs specific, but saves 200-300 bytes, and I think we'll need each and every one of them to make all of this work. * Also for 0.0.50 (maybe) are more efficent memcpy_tofs-type routines. Since I have a 5150 up now, it might be a good idea to tighten the code a bit so that it'll be tolerable when we actually run programs on it. CGA snow-checking may become a #define RSN too, since it annoys me :) * I forgot to mention that strace needed to be enabled in autoconf.h, so if you're going 'where's the strace', look there and make sure it gets #defined. VERSION pre-0.0.49 NOTES ------------------------ * The system call # ordering has changed, so you have to copy syscall.dat (in this directory) to (*)linux-86/libc/syscall/syscall.dat and rebuild and reinstall the library and elksemu. Most of the simple programs which actually work at this point don't use any of the changed system calls (much :), but it's a good idea to update your libc anyway. * An in-kernel strace has now been implemented which will allow us to track system call usage better (once libc has been changed :) Right now, it dosen't print parameters for most functions, but it uses a table scheme making that rather easy to fix (once you know the types, and look at strace.h) * sys_getuid() and sys_getpid() have now been implemented rather simply, returning their respective uid and pid variables directly from current. VERSION 0.0.48a NOTES --------------------- * A few more bugs fixed. There were two bad bugs in fs/minix/file.c - one of which was caused by comparing an int16 to an int32, which is borken in bcc. The other was that buffers were not being brelsed like they should have been, which meant that all the buffers filled up... * I also have keyboard handling working, but only with the BIOS console, which is compiled in right now... it's a half-broken implementation though. If someone has any ideas on how to do this better, feel free to put them in code and send them to me (please :) Right now keyboard I/O blocks everything, because I don't think querying keys works right under dosemu, but it should work on most machines... * ash does not work yet, but it does start - freezeing after it goes into cmdloop() for some reason. We need smaller tests where we can confirm breakage points easier, and still run them as /sbin/init, which rules out some of the tests in libc-86 as they are 'out of the box'. * The test directory is still evolving. Trying to get fork/exec working in code okay... VERSION 0.0.48 NOTES -------------------- * Reading files past 6K is no longer broken! YES! :) Supplied with this is a compressed 1.44MB disk image which contains the program used to copy this, and a suitable 12K file (the Linux 1.2.x readme) to display, just to prove I'm not making this up :) * Basically, this fixes many bugs in pre-0.0.48 involving the new buffer cache setup and the fs system. There was also a nasty bug in the block device subsystem which involved ended requests not being reset right (limiting the number of requests to 20...) which I fixed. I also replaced minix_getblk with something based on the 0.0.12 bmap stuff (>519K files are not yet supported, since I was too lazy to write the code)i * There are probably a few bad bugs left, and a few kludges to fix (e.g. the one I just put into the console driver which treats '\n' like '\n\r'...) , and a keyboard driver to add before we can even consider bumping this up to 0.1.0 though... but this version is a step in that direction. VERSION pre-0.0.48 NOTES ------------------------ * This version features a new two-tier buffer cache design, which I was able to graft onto the existing one. Basically, what I've done is set up a 64K segment in which we can stick in 64 buffers (the L2 cache). When we need to access their data, we map them into the L1 cache for a while. After it's done, unmap_buffer() is called, allowing the buffer to be unmapped. The actual unmapping is only done in map_buffer so that a buffer can be 'remapped' with no performance penalty. * Also, buffers are automagically mapped when lock_buffer() is called, making any modifiation to the block devices unnecessary.) * This is a 'first cut' at the new design. It somehow worked on the first sucessful compile (even though I forgot to reserve space for the buffers, which implies no swapping to L2 was ever done...) but there are probably bugs in here somewhere... * I've just tested it on loading and running 'hello, world!' which works... finally, there are many unmap_buffer calls followed by brelse, which can be optimized by making them one function in some cases. * The reason why this is pre-0.0.48 is that I'm not sure if this is the right way to go, and I would like feedback on it. New test programs for /sbin/init would be nice too... VERSION 0.0.47 NOTES -------------------- * The attack on fs bloat continues, with some functions rearranged and all Minix V2 fs support dropped. The code size has been knocked down another 500 bytes from 0.0.46, and it still runs hello world... * The number of buffers has been bumped up to 16. Now the kernel's really stuffed with herring :) Seriously, I think it might be a good idea to break the buffers out into their own ds, but that won't be in this version... * I also reorganized the comment structure for exec.c into the new one, although I didn't do anything else yet. VERSION 0.0.46 NOTES -------------------- * The root disk is now set to the second floppy drive. Not too much has changed, except for the setup and disk driver code's floppy detection. The buffer cache has been modified to bring down the total code size by 600 bytes compared to pre-0.0.45a by changing the way the flags are handled. This is lightly tested, but it can still start /sbin/init, and it still has most of the same bugs anyway :) * There were three different pre-0.0.45 releases - the final one is 0.0.46 to avoid confusion - Chad. * If your floppy drive is other than 3.5" 1.44MB, you will have to change the constants in drivers/block/doshd.c (search for "hardcode").
Commit message
This repository is read-only for this account.
Repository snapshot
Current branch
master
Visibility
public
Your access
Read
Remote
Configured
File activity
View file history