home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-08-03 | 64.1 KB | 1,805 lines |
- Changes are listed in *reverse* order, most recent changes being
- first.
-
- version 0.95
-
- PATCHLEVEL13::
-
- proto.h,filesys.c:
- Added Alex's patches for Lattice.
-
- PATCHLEVEL12::
-
- dosdir.c:
- Fsnext() on symbolic links was broken, because
- relpath2cookie no longer checks drive letters
- unless "depth" is > 0. Fixed this.
- main.c,filesys.c:
- Added support for putting the mint.cnf file
- and any *.XFS files into the directory \mint.
- dos.c:
- Added Pgeteuid() and Pgetegid() system calls.
- main.c:
- Fixed the "set current directory" code to
- work properly.
- main.c:
- Added a sanity check; if GEM is already running,
- don't try to run it again.
- procfs.c:
- Added FIONWRITE and FIONREAD ioctl calls.
- proc.c,bios.c:
- Fixed the type of the critical error handler.
- dosfile.c,file.h,proc.c:
- Added Alex's patches for O_APPEND and O_NOINHERIT.
- shmfs.c:
- Fixed lseek() on shared memory segments, and added
- FIONWRITE and FIONREAD ioctl calls.
- fasttext.c:
- Tried once again to tame the wild cursor.
- dosmem.c,proc.c:
- Modified process startup code so that PROC structures are no
- longer kept forever by the kernel (which should help alleviate
- memory fragmentation problems a bit).
-
- PATCHLEVEL11::
-
- dosmem.c:
- Applied Alex Kiernan's SIGTRAP bug fix (and kicked myself for
- forgetting C's precedence rules; thanks, Alex!).
- filesys.c:
- Fixed relpath2cookie so that names like "C:\Z:" aren't
- interpreted as referring to drive Z:.
- fasttext.c:
- Restored the "turn on cursor when opening()" code, because
- without it the fasttext driver and BIOS aren't in sync.
- main.c:
- Moved the check for the presence of an already existing MiNT
- cookie to earlier in the initialization process, so that
- the error message can be printed properly.
- shmfs.c:
- Fixed Dpathconf() on U:\SHM (filenames are truncated automatically
- on that file system) and corrected the comment there.
- syscall.s:
- New function, call_aes, used to check for the presence of GEM
- (so we can tell whether or not we're running from the AUTO folder).
- main.c:
- Run any programs which come after mint.prg in the AUTO
- folder.
- version.h:
- Changed so that the patchlevel is always printed on boot-up.
-
- PATCHLEVEL10::
-
- unifs.c:
- Add U:\SHM as an interface for shared memory.
- shmfs.c:
- New file system for doing shared memory.
- xbios.c:
- Fixed Bconmap() to always return an error if the underlying
- TOS doesn't support Bconmap.
- main.c:
- Fixed a bug in the argument parsing code for the "exec"
- command in mint.cnf.
- dosdir.c:
- Changed Dlock() to return ELOCKED if an attempt is made to
- lock a drive that's already locked, and ENSLOCK if an attempt
- is made to remove a non-existent lock.
- version.h:
- I forgot again to update this. Aargh!
-
- PATCHLEVEL9::
-
- mem.c,mem.h:
- Align everything on 16 byte boundaries.
- mem.c,dosmem.c:
- Actually fix the "memory being allocated twice" bug.
- The problem was that setting m->links to 0 before calling
- attach_region was a no-no.
-
- PATCHLEVEL8::
-
- mem.c:
- Attempt to fix the strange "memory being allocated
- twice" bug.
- tosfs.c:
- Truncating names at 14 characters came *before* the
- 8.3 kludge, which meant that long names were being
- interpreted incorrectly (e.g. gcc-cc1plus.ttp was
- becoming "gcc-cc1p.tt"). Temporary kludge: only
- truncate at 32 characters. Long term solution:
- re-write this code to do the 8.3 truncation at the
- same time as the truncation.
- main.c, proc.h:
- Provide a more explicit type for criticerr.
- proc.c:
- Don't make _logbase per-process if hardware scrolling
- is active, since this makes for all kinds of weirdness!
- mem.c:
- Allow NULL commandline to be the same as an empty
- string. (It was acting this way before, due to the MiNT
- library strncpy; now that we use our own strncpy some
- programs were passing funny arguments.)
- dosmem.c:
- Provide a more detailed trace of Pexec activity.
- mem.c:
- Added a sanity check in get_region().
- proc.c:
- Set the time/date stamp of process 0 to the
- date & time when the system was booted.
- fasttext.c:
- Commented out the code that turns the cursor
- on when u:\dev\fasttext is opened.
- tty.c:
- Unsigned characters are always >= 0, so we
- don't need to check this.
-
- PATCHLEVEL7::
-
- makefile.lcc,mintlc.prj:
- Added Alex's patches.
- assert.h:
- Added Alex's patch to cast the result to void.
- filesys.c:
- Make sure the file system media change routine
- is called every time a disk change is forced;
- this corrects the Dlock() bug (it wasn't forcing
- media change as it should have).
- version.h:
- Oops! I forgot to increment this for pl6, so
- it jumps by 2 this time.
-
- PATCHLEVEL6::
-
- biosfs.c,pipefs.c,tty.c:
- New Fcntl calls for controlling terminal baud
- rates and flags such as parity and stop bits.
- These have been integrated with the old TIOC*
- calls where applicable.
- dosfile.c:
- Changed Fcntl to make a call to tty_ioctl be the
- default if the device is a terminal and the device
- ioctl routine returns EINVFN.
- procfs.c, proc.c:
- The date/time stamp of a process now shows when the
- process was started, rather than being the number
- of seconds of CPU time used.
- tosfs.c:
- Degrade an ALERT to a TRACE; there is a circumstance
- in which a root directory can apparently be changed,
- and that's when a program tries to open an empty
- file name. We don't need to warn the user that
- something is wrong in this case; we can just fail
- silently.
- proc.c:
- Save the logical screen base for each process.
- main.c,bios.c,proc.h:
- Made the critical error handler per-process.
- bios.c,syscall.s:
- A cleaner way of saving registers when calling
- functions... this wasn't really necessary, but I
- did it to make tracking a bug down easier.
- tty.c:
- New terminal flag, T_NOFLUSH, to suppress flushing of
- input when SIGINT or SIGQUIT is received.
- *fs.c, file.h:
- Added a new Dpathconf() option that tells whether or
- not a file system is case sensitive.
- dos.c:
- Forbid Prenice() on processes that you don't own.
- dosmem.c:
- Correct a typo that was causing terminal process groups
- to be incorrectly set.
-
- PATCHLEVEL5::
-
- makefile:
- The -DOWN_LIB declaration should have been on (actually,
- it was, in my copy... sorry for the mix-up).
- fasttext.c:
- Applied Alex's patch for the disappearing cursor bug.
- everywhere:
- Applied Alex's patches to add "const" declarations where
- appropriate, and to get rid of size_t (since if OWN_LIB
- is defined we use "int" instead).
- dosmem.c:
- Fixed M_KEEP to attach memory to rootproc *only* at
- process termination.
-
-
- PATCHLEVEL4::
-
- proto.h:
- Added prototype for do_func_key().
- everywhere:
- Applied apratt's debugging/trace patches.
-
- PATCHLEVEL3::
-
- xbios.c, biosfs.c:
- Change Bconmap to actually do the equivalent of an
- Fforce(-2, foo) call; this way, we don't need the
- ugly DFLTMODM kludge. (On the other hand, we introduce
- some new ugly kludges :-)).
- main.c,proc.c:
- Wait until everything is initialized before opening
- devices; this avoids bogus critical error messages from
- AHDI.
- util.c, mint.h, ctype.h:
- Add all sorts of utility routines (for string processing,
- character type recognition, and the like). This is
- designed to make sure that MiNT works the same regardless
- of what library is used to compile it. We're not quite
- totally independent of library yet (the startup code and
- <osbind.h> aren't replaced) but we're pretty close.
- main.c, proc.c:
- Initialize the current directory for the root
- process *after* file systems have been loaded, since
- otherwise the info is nuked when a new fs is loaded in.
- bios.c:
- Allow output to BIOS device 5 to be redirected along
- with BIOS device 2; we do this by using the MW
- ESC-Q control sequence to quote characters. A bit of
- a hack, but then, not many people use device 5.
- quickmov.s:
- Fixed two bugs in quickmove: (1) it didn't work for
- regions bigger than 0x00fffe00 bytes in length,
- and (2) it assumed the length was a multiple of 4
- bytes.
- fasttext.c:
- Re-arrange things a bit to get rid of a gcc 2.1 warning.
- dosmem.c:
- Change flag 0x4000 to mean "don't free the memory
- automatically on process termination"; explicit
- Mfree requests are still allowed, and after
- termination *any* process may Mfree the memory.
-
- PATCHLEVEL2::
-
- makefile:
- Remove -fcombine-regs from CFLAGS, since gcc 2.1
- doesn't understand it.
- bios.c:
- Ignore value returned by Bconout for the screen
- (many text accelerators get this wrong :-( ).
- dossig.c, signal.h:
- New system call, Psigaction(), by AGK.
- xbios.c:
- Added support for Bconmap.
- bios.c, biosfs.c:
- Rationalized the way biosfs and bios interact;
- no more funny device numbers are needed. Also:
- added support for Bconmap, and a new default
- modem device.
- pipefs.c:
- Applied Michael Hohmuth's patch for pipe_close (thanks,
- Michael!)
- filesys.c:
- Don't try to initialize all the drives at boot time; path2cookie
- is quite capable of initializing, and it saves having
- to access drive B: (for example) while booting is going
- on.
- main.c:
- Allow the user to avoid booting MiNT if the right shift key
- is held down.
- main.c:
- Added safety checking, as suggested by AKP.
- dosmem.c:
- In Mxalloc, if (mode & 0x4000) is nonzero then allocate non-freeable
- memory (we do this by attaching the memory to the root process).
- fasttext.c:
- Tabs should be non-destructive on the ST!
- proc.h:
- Re-arranged some things. Note that "slices" was never supposed
- to be visible to users! Also, added a "bconmap" variable to
- give the current Bconmap mapping for the process.
- dosdir.c:
- Fail Ddelete of current directories only on the current
- drive; for other drives, reset the current directory
- to the root directory. NOTE: Ddelete of a current directory
- is forbidden only if the directory is someone else's
- current directory; if it's only your current dir., you
- can delete it (and get automatically bumped back to
- root).
-
- PATCHLEVEL1::
-
- dosmem.c:
- Fixed a bug that caused processes with no '.' in their names
- to have the wrong process name.
- dosmem.c:
- In Pexec, make sure we yield to the new process so that
- it gets at least one timeslice to do an Mshrink().
- proc.c:
- In preempt(), don't punish processes that have buffered
- BIOS output and are preempted; the process of flushing the
- buffer may very well put them to sleep, and in any event
- processes doing I/O should not be considered "hogs".
- tosfs.c:
- Don't look for volume labels in opendir/readdir/lookup etc.
- main.c:
- AGK: added DEBUG_LEVEL and DEBUG_DEVNO options to mint.cnf.
- dossig.c:
- New system call (Psigpause()) courtesy of Alex Kiernan.
- dosmem.c:
- In Pexec(200,...), don't reset base->p_parent, since the
- "parent" in an overlay exec is oneself.
- tty.c:
- Fixed so that RAW mode reads will return all of an
- extended escape sequence at once, rather than waiting
- for the next read.
- dosmem.c:
- When terminating a process, make sure that it's "number of
- memory regions" is set to 0; otherwise, calls to memused()
- on the process (e.g. by procfs) can crash the system.
- dosdir.c:
- When removing directories, make sure that the directory
- isn't in use as someone's current directory (so that
- they don't get left in limbo).
- fasttext.c:
- Screen memory must come from ST RAM -- otherwise hardware
- scrolling crashes and burns. Fixed thanks to AGK.
- xbios.c:
- Moved the prototype for midiws to proto.h, and corrected the
- type of its argument (it should have been "int", not "short").
-
- PATCHLEVEL0::
-
- bios.c:
- Terminal modes weren't being set correctly in Bconout, and also
- weren't being set in bflush (which should have employed RAW
- mode output, but didn't).
- everywhere:
- Merged in Alex Kiernan's latest Lattice C patches.
-
-
- version 0.94
-
- PATCHLEVEL4::
-
- filesys.c:
- Use U:\DEV\CON for CON:, instead of V:\CON, since we're
- going to make drive V: go away soon.
- unifs.c:
- When looking up a drive, make sure that it has a valid file
- system attached to it -- otherwise, newly installed ramdisks
- can cause system crashes :-(.
- fasttext.c:
- Patches to make the fast text device work correctly on a TT,
- courtesy of Erling Henanger.
- main.c:
- Install 16 extra cookies, instead of 8, just to be friendly.
-
- PATCHLEVEL3::
-
- main.c:
- Allow PSEUDODRIVES=MAP to put the extra drives in
- _drvbits without installing new drivers for them.
- unifs.c:
- Don't rely on drvmap() to figure out what drives exist;
- it isn't accurate if PSEUDODRIVES=NO.
-
- PATCHLEVEL2::
-
- main.c:
- Added an option for turning off the BIOS routines for the
- pseudo-drives.
- filesys.c:
- Moved the vector set/restore code to main.c (where all the
- other vector stuff is).
- tosfs.c:
- If the _FLK cookie was already set when MiNT started, we
- pass file sharing and locking requests through to GEMDOS.
- main.c:
- Turn the cursor off when leaving, if we were started from
- the desktop.
- tosfs.c:
- Fixed a bug in which tos_chmode was returning an incorrect
- value.
- debug.c:
- Added code for octal output to sprintf().
- dosdir.c:
- Make Fsfirst() with the FA_LABEL bit set work on non-TOS
- file systems (via the file system readlabel function).
- (This used to work only when the search was restricted to
- labels only.)
- various places:
- Get rid of gcc 2.0 warnings.
-
- PATCHLEVEL1::
-
- file.h:
- Because Fmidipipe and the disk change code can close
- files other than the files of the current process,
- the device driver "close" function needs another
- parameter, namely the process id being closed; this
- allows device drivers to remove locks properly.
- tosfs.c:
- Volume labels shouldn't be found by Dreaddir().
- tosfs.c:
- Added file locking.
- filesys.c, main.c, file.h:
- New utility routine (denylock) to make implementing file
- locking easier for file systems.
-
- PATCHLEVEL0::
-
- tosfs.c:
- Canonicalize file names (i.e. convert to 8.3 format).
- Also, keep track of the value returned from the last
- readdir() call, so that a subsequent Fxattr() will take
- place quickly.
- proc.c:
- In sleep(), make sure interrupts are disabled while queue
- manipulations are occuring.
- bios.c:
- Correct a stuttering problem for ^C and similar interrupts.
- dosmem.c:
- 8 character process names weren't terminated properly.
- tty.c:
- Aaargh! Shift+cursor keys were being interpreted even when
- they shouldn't have been.
-
- version 0.93
-
- PATCHLEVEL6::
-
- filesys.c:
- Check for newly installed drives when parsing an
- absolute path without an explicit drive letter, as
- well as when looking at ones with drive letters.
-
- PATCHLEVEL5::
-
- biosfs.c, fasttext.c:
- Allow TIOCGWINSZ calls on the console (we use the line A
- variables to get the number or rows and columns).
- filesys.c:
- Fix a typo in the file system initialization checking.
- pipefs.c:
- Make "VIRGIN_PIPE" more obviously a magic value, and
- document it.
- pipefs.c:
- Make u:\pipe have a sensible date/time; also, make
- Dfree on u:\pipe return some useful statistics about
- the number of pipes in the system.
- procfs.c:
- u:\proc has a sensible time and date now, namely the
- time/date of the last process creation or destruction.
- dosfile.c:
- Fcreate() of a volume label now returns a handle to
- u:\dev\null.
- dosmem.c:
- Make sure the BIOSBUF buffer is flushed when terminating.
- main.c:
- There's a bug in TOS 1.4: GEM seems to assume that all
- memory is zero initially, and if it isn't (e.g. if a large
- AUTO folder program like MiNT terminates and leaves behind
- dirty memory) then having too many (or the wrong kind of)
- desk accessories can lead to a crash. This was a real bear
- to track down, and the work-around is very ugly; before
- MiNT exits we copy a short machine language subroutine into
- the command line, and then execute it; the routine zeros
- all of the TPA and then does a Pterm0().
- rendez.c:
- Change a "short" to "int" for the benefit of gcc 2.0.
- bios.c:
- Stop process dumps from stuttering.
- console.c:
- Added support for global file handles.
-
- PATCHLEVEL4::
-
- dosfile.c:
- In Fselect(), we have to re-validate file handles after
- a sleep() call, since signal handlers may close files.
- proc.c:
- Pre-allocate more PROC structures (this should help
- reduce memory fragmentation).
- tty.c, file.h:
- Allow cursor/function keys to send escape sequences.
- dosdir.c:
- As suggested by S. Henson: Dsetpath through a symbolic link
- may also require changing the current drive as well.
- proc.c,dos.c,timeout.c:
- New process scheduling algorithm, as suggested by A. Pratt.
- dosdir.c:
- Make only the low bit of Dlock() significant, for future
- expansion.
- dosfile.c:
- Allow Fcreate() to create a global file handle.
-
- PATCHLEVEL3::
-
- debug.c:
- Changed TRACE mode output so that not just any keys will
- start/stop output, but only Help and Undo.
- dosdir.c, filesys.c:
- Add a Dlock() system call to lock/unlock drives.
- filesys.c:
- Only initialize drives if the BIOS drive map says that
- they exist.
- dosmem.c:
- In Pexec, make a copy of any name we're going to use
- before freeing memory for overlayed programs; the old
- way was decidedly incorrect!
- dosfile.c:
- Allow for global file handles, so that shared libraries
- can use file handles that are the same for all processes.
- dosmem.c:
- In Mxalloc, ignore bits that we don't understand, to
- allow for future expansion.
- syscall.s:
- Fix a bug that could cause the wrong system call to be
- made if BIOS buffering is on (!).
- bios.c:
- Streamline the BIOS buffering mechanism, and make it
- more conservative about multiple processes doing Bconout
- output.
- procfs.c:
- Allow "foo.-1" to stand for the current process, and
- "foo.-2" to stand for our parent. Also, add new
- Fcntls for getting/setting memory flags.
- bios.c:
- In Setexc(), don't actually change any vectors, let the BIOS
- do it -- some TSR's install trap handlers that look for
- certain Setexc functions...
- signal.c:
- Allow nested Supexec() calls, or Supexec()'s from a terminate
- vector.
- procfs.c:
- Change the definition of PPROCADDR and add a new Fcntl,
- PCTXTSIZE.
- mem.c:
- In exec_region, set the stack based on the value of p_hitpa
- from the basepage, instead of the size of the memory
- region -- some programs rely on being able to set the initial
- stack pointer for a Pexec(4,...) this way.
- main.c, context.s:
- Avoid using 68020 instructions if we're on a 68010.
-
- PATCHLEVEL2::
-
- dos.c,proc.c:
- More tweaking of the priority code.
- main.c:
- Change the type of "tosbp" from char ** to BASEPAGE **,
- since that's what it really is.
- main.c:
- Add a special case for the Spanish TOS 1.0 act_pd variable.
- pipefs.c:
- When a writer is waiting to write a small amount of data
- atomically, remember to wake up readers so that they
- can clear the pipe!
- debug.c:
- Add the %u flag to ksprintf() (Fselect uses it, maybe others
- do too...)
- dosmem.c:
- In Pterm(), put the exit code onto the stack when calling
- etv_term. It won't be in the same place as it was for TOS,
- but c'est la vie. (People asked for this feature...)
- xbios.c:
- Provide a way to pass arguments to Supexec(). Note that Atari
- never documented that this was possible, but some people were
- relying on it anyway :-(. (Don't use this feature, it's only
- there as a compatibility hack.)
- main.c:
- In shutdown(), don't bother waiting a second for processes
- to finish if there are no other processes.
- filesys.c:
- Make sure that path names are null terminated after strncpy.
- mem.c:
- Fix the code to zero process registers so that it *only* zeros
- process registers.
- dosmem.c:
- Eliminate some redundant code.
- dosfile.c:
- Open u:\pipe\sys$pipe.xxx rather than q:\sys$pipe.xxx.
- main.c:
- Change a "malloc" into "kmalloc", and restore the #include
- of <minimal.h> that was inadvertently deleted.
- main.c:
- Allow parameters to be passed to the initial program specified
- by the INIT= string.
-
- PATCHLEVEL1::
-
- main.c:
- Fix a typo in shutdown() that was causing problems when
- MiNT was shut down while processes were active.
- tosfs.c:
- Make sure that tfullpath() returns a string less than
- PATH_MAX characters long.
- everywhere:
- Replace "sprintf" with "ksprintf".
- debug.c:
- Add a "ksprintf" function that's like sprintf(), but
- (a) doesn't have so many features (making it smaller),
- and more importantly (b) won't try to write more than
- SPRINTF_MAX characters into a buffer.
- filesys.c:
- In path2cookie, make sure we don't try to copy more than
- PATH_MAX characters into the fixed size buffers.
- dosmem.c:
- The "sleep if no memory available during Malloc" code
- was causing more problems than it solved, so it was
- removed. To compensate, we increase the priority of
- newly Pexec'd processes to make sure that they get
- to run.
- dosmem.c:
- Aaaargh! A very serious screw-up in terminate() was
- causing us to wake up processes sleeping in vfork()
- even when their children were still using the address
- space; needless to say, horrible (and mysterious)
- crashes could ensue. Fix: only force the parent awake
- if wait_q == WAIT_Q && wait_cond matches the terminating
- process, otherwise let post_sig() handle waking.
- While fixing this bug, re-arrange the terminate code
- to do the waking up at the very end, just in case some
- of the other code may cause a sleep() temporarily.
- bios.c:
- Fix the scan code for the UNDO key.
- fasttext.c:
- Use Setscreen() to set the hardware screen base, since setting
- the variable at 0x45e causes TOS to keep setting the screen base
- ad infinitum.
-
- PATCHLEVEL0::
-
- rendez.c:
- When waking a process up from a semaphore, check to see
- if it's on the WAIT_Q before trying to remove it from
- that queue (it might have been moved off the wait queue
- by a signal).
- bios.c:
- Make sure that Bconout(2,c) always succeeds, to compensate
- for text accelerators and other programs that don't return
- sensible values from Bconout. Also, ignore the Bconout
- return value when flushing the text output buffer.
-
- version 0.92
-
- PATCHLEVEL4::
-
- biosfs.c:
- Provide devices for the extra Mega STe serial ports.
- biosfs.c:
- Make the kernel info structure available to device drivers
- loaded with Dcntl.
- xbios.c:
- Provide a modified Midiws function so that this is also
- affected by Fmidipipe and Fforce.
- biosfs.c:
- Split bios_device into two device drivers; one for
- terminal devices, and one for plain character devices
- (the printer and IKBD port fall into this category).
- Also: provide a new Dcntl call to install plain BIOS
- devices in U:\DEV.
- tty.c:
- Check for terminal start/stop keys while reading.
- bios.c:
- In checkkeys, loop through all keys received since our last
- interrupt, rather than just checking the last thing in the
- buffer (as A. Pratt suggested).
- bios.c, tty.c:
- Made the "disable" character for special terminal functions
- (e.g. the EOF key) be 0 instead of -1; this matches System V,
- is more POSIX friendly, and also makes confusing function keys
- and ^@ less likely. (Thanks to Scott Willingham for this
- suggestion.)
- file.h, elsewhere as needed:
- Renamed the O_BIOS flag O_TTY (since that's what it really
- represents) and renamed the is_bios macro is_terminal.
- dosmem.c:
- Make Pexec mode 106 cause the child to be truly independent
- of the parent (i.e. it doesn't get the parent's address space,
- nor does the parent get the child's).
- biosfs.c:
- Allow symbolic links from U:\DEV; this lets us do things like
- Fsymlink("U:\PIPE\SERVERFIFO", "U:\DEV\SERVERDEV").
- main.c:
- When PRN=d:\foo is specified, create the file foo instead of
- just trying to open it; this makes no difference to devices,
- but makes redirecting printer output to a file much more
- convenient.
- unifs.c:
- Fix a bug that was causing Dgetpath() to return incorrect
- information for U:\A.
- timeout.c:
- Make sure "searchtime" is up-to-date; bconout uses this for
- the time out.
- biosfs.c:
- Fix bios_write so that if bconout fails, so does the write.
- bios.c:
- Fix bconout so that it doesn't hang forever if the device isn't
- going to be ready (e.g. the printer is off); instead, there's
- a 10 second timeout.
- main.c:
- Send all processes SIGTERM when we're shutting down, so that
- they have a chance to clean up after themselves.
- mint.h:
- The KBDVEC structure was missing the "clockvec" element (!).
-
- PATCHLEVEL3::
-
- biosfs.c:
- Revised to allow support for loading/removing device drivers
- dynamically, via a Dcntl() call.
- dosmem.c,mem.c,dosfile.c,file.h:
- Added support for setuid/setgid. These bits are only checked
- in Pexec modes 0, 100, and 200, i.e. the "load and go" modes.
- rendez.c:
- Added new semaphore code from Allan Pratt.
- main.c:
- New command for mint.cnf: "exec foo.prg bar" runs the program
- "foo" with argument(s) "bar".
- main.c:
- Use the XBRA protocol for all interrupt routines that we grab.
- filesys.c:
- When terminating MiNT, close all open files to make sure data
- is flushed and devices are nicely shut down.
- main.c:
- Add some more variables, such as CON and PRN for redirecting
- those handles, and HARDSCROLL for controlling the fast text
- output.
- proc.c:
- Make sure the "links" field for the prn and aux handles is
- correct.
- syscall.s, bios.c:
- Special case the BIOS Bconout code to try to speed it up
- a bit. We allow for buffering of Bconout output; the buffer
- is flushed on the next non-Bconout system call or context
- switch. This should usually work OK, but as a precaution
- we provide for a way to turn it off (BIOSBUF=NO in mint.cnf).
- fasttext.c.fasttext.h:
- New files for a faster text output device; changes were
- made to biosfs.c to support this, too.
- tty.c:
- Streamline writes to terminals by sending data to the
- tty device in chunks instead of 1 character at a time.
- dosfile.c:
- In do_open, always return EFILNF, never EPTHNF.
- dosmem.c:
- Use supexec() to execute the terminate vector code, to
- avoid duplication of signal 0 faking.
- xbios.c:
- In Supexec() does leave the kernel, so we have to make
- appropriate adjustments. We do this by faking a signal
- (signal 0) and installing the user's function as a signal
- handler.
- dosdir.c:
- Make Dfree(x) actually look at free space on the drive which
- corresponds to the current directory on <x>; this should make
- Dfree on drive U: much more useful.
- proc.h:
- Make the "base" field of the PROC structure have type BASEPAGE *
- (since that's what it is!)
- basepage.h, dosdir.c, dosmem.c:
- Support some undocumented fields in the basepage a little bit
- (i.e. they're read only). Programs that try to write to these
- fields break. Surprise, surprise.
-
- PATCHLEVEL2::
-
- dosmem.c, mem.c:
- The docs say that children started with Pexec(104,...) or
- Pexec(106,...) share the parent's memory. This was unfortunately
- not the case; if the parent exited and the child was running
- in the parent's address space (e.g. see tfork() in mntlib)
- the child died very soon thereafter (like when the next program
- comes along and clears the memory the child was running out of).
- This is now fixed.
- dos.c, proc.c, timeout.c:
- More tuning of the process scheduler.
- main.c:
- Added "setenv" function for mint.cnf.
-
- PATCHLEVEL1::
-
- filesys.c:
- In some circumstances, AHDI will keep telling us that a drive
- has changed, ad infinitum. To avoid this, we stop trying after
- 8 media changes occur in a row.
- util.c:
- Tuned the kmalloc() strategy to reduce memory fragmentation
- (every process will be allocating 264 bytes for its
- memory region maps right after creation, and this should
- come from kernel memory).
- tty.c:
- Under TOS, 1 byte writes should always be in raw mode.
- dos.c:
- In Syield(), we should call sleep() even if no other processes
- are waiting, just to make sure that signals, alarms, etc.
- are properly dealt with.
- filesys.c, dosfile.c:
- The media change code was wedged (actually, the fault was in
- do_pclose, which sometimes neglected to check to see whether
- or not the file had a still-valid device driver).
- dosmem.c:
- In the termination code, close "files" referring to a process
- *before* freeing all the process memory; that way, we don't
- have to worry in do_pclose() and other places about what
- kind of state the process is in.
- mem.h:
- Round off memory regions only to a word boundary for better
- TOS compatibility.
-
- PATCHLEVEL0::
- dos.c,intr.s,syscall.s:
- Changed s_yield() to actually give up the processor if
- another process is waiting for it; this means that processes
- that call Syield() won't be penalized by the priority code.
- Also: added a new kernel function, preempt(), which does
- what the old s_yield() did (and hence penalizes CPU hogs).
- makefile:
- Cleaned up a bit, per suggestions from A. Pratt and D. Gymer.
-
-
- version 0.91
-
- dosmem.c:
- Only the high 4 bits of the program load flags give memory
- requirements (we were using 8 bits).
- dosdir.c:
- Add a hack so that ksh still works (it was using '/' in a
- path name). THIS HACK WILL GO AWAY SOMEDAY!
- tty.c:
- CBREAK mode shouldn't do erase, kill, or EOF processing.
- dosdir.c:
- Freadlink should check first to make sure the file really
- is a link!
- file.h,tty.c:
- Change the name "struct winsiz" to "struct winsize" to match
- what Unix calls it (cosmetic change only).
- unifs.c:
- Allow renaming of the drives, and allow rmdir() to work
- like unlink() for symbolic links (since we fake the return
- value from Fsfirst to look like a directory if the link
- points to a directory).
- biosfs.c:
- lseek() on the null device should not return 0 always;
- otherwise, it will look like a terminal to many programs!
- dosfile.c:
- If a MiNT domain process closes stdin or stdout, they
- really do want them closed (for compatibility with
- MiNT 0.8).
- syscall.s:
- When returning from traps, don't pre-empt the current process
- if it's in supervisor mode.
- mem.c:
- Fake some stuff in the basepage so that programs compiled
- with dLibs will work some of the time.
- tosfs.c:
- Make the value returned from Dgetpath() lower case in the MiNT
- domain. Also, make tosfs a little less verbose when debugging
- or tracing is on.
- dosmem.c:
- Try to allocate space for saved fork() memory in the alternate (TT)
- memory map first, as well as in core (ST) memory.
- mem.h:
- Round allocation requests up to multiples of 8 bytes instead
- of 4; this automatically gives us a bit of slush for ill
- behaved programs, and also means that requests will always
- be for a multiple of sizeof(double) bytes.
- util.c:
- Get rid of the extra slush around kmalloc'd regions (which
- was a lot bigger than originally intended anyway!)
-
-
- version 0.9
-
- PATCHLEVEL21:: released version
-
- dosmem.c:
- Make Malloc and Mxalloc try again if there isn't enough memory;
- maybe the situation is temporary.
- mem.c:
- Plug a memory leak in load_region(); also make load_region try again
- if there isn't enough memory to load the program (just in case the
- situation is temporary).
- dosdir.c:
- Add a check to Fattrib to make sure that attributes of directories
- are never changed.
-
- PATCHLEVEL20::
-
- dosdir.c:
- Allow Frenames of processes and other special kinds of files even
- if they do have the FA_RDONLY bit set.
- dosfile.c:
- Allow creation of files with the read-only attribute.
- tosfs.c:
- Change the file deletion code so that an attempt to delete an
- open file no longer fails, but rather marks the file to be
- deleted when it is closed.
- file.h:
- Add some extra space to the tty struct, for future expansion.
- filesys.c,main.c:
- Make sure the fake BIOS disk routines are available before
- any of the pseudo-drives are used, by having them set up
- in init_filesys() instead of init_intr().
- tosfs.c:
- Remove some debugging output that isn't needed anymore.
-
- PATCHLEVEL19::
- Beta release.
-
- intr.s,main.c:
- provide some fake BIOS disk routines for the pseudo-drives,
- in hopes of avoiding "drive U: is not responding" types of
- messages that some have reported
- pipefs.c:
- half.ttp was failing under mgr, because of a race condition:
- our select() returns "ready" for a pipe if nobody exists to
- write to it (since then a read will return immediately). half
- would make a pipe that would end up being destroyed immediately
- by mgr before it got attached to a process. Solution: pipes that
- have *never* been opened yet for writing get a special marker
- and select doesn't worry about them, only about ones that were
- once written to.
- pipefs.c:
- Fixed FIONWRITE to return the correct value.
- dosdir.c:
- Refuse to Frename a file with the FA_RDONLY attribute.
- biosfs.c:
- Fixed bios_write to return the number of bytes successfully
- written.
- bios.c:
- LAST_DEVICE was inaccurate. This could happen again, so I'm simply
- getting rid of it and leaving all errors to the BIOS.
- pipefs.c:
- Make sure the FA_RDONLY attribute is sensible (i.e. unidirectional
- pipes that don't have a writer can still be written to).
- filesys.c:
- Fixed relpath2cookie so that it doesn't *always* follow symlinks
- (it only should when lastname == follow_links)
- dosfile.c:
- If the FA_RDONLY bit is set on the file, even the superuser should
- be denied access for writing.
- dosfile.c:
- Requiring write permission for Fdatime is a Bad Idea, since GEMDOS
- doesn't; so now MiNT doesn't either.
- tosfs.c, filesys.c:
- Fixed a bug with media changes (Fsfirst would sometimes try to close a
- directory that had already been automatically closed by a media change).
-
- PATCHLEVEL18::
-
- main.c:
- Fixed the machine type detection code; it needs to run before
- biosfs is initialized, i.e. before init_filesys().
- main.c:
- Provide a configuration file so that users can automatically
- setup symbolic links and can change their init program.
- biosfs.c:
- Allow rename on bios devices, so people who want terminals called
- "ttyX" instead of "modemX" can do so.
- dosdir.c:
- Flink shouldn't need write permission on the destination
- directory, only the source.
- dosfile.c:
- Added FSTAT function for Fcntl, to allow a better version of
- fstat() for the library.
- dosfile.c:
- Add code to fcntl to automatically convert MiNT 0.8 O_NDELAY
- into MiNT 0.9 O_NDELAY. This is a temporary measure only,
- to let older versions of mgr continue to work for a while.
- filesys.c:
- Symbolic links with relative paths were always failing with
- ELOOP. Oops! (Thanks to Stephen Henson for catching this.)
- file.h, tosfs.c, dosfile.c:
- Added a new flag, FS_NOXBIT, to control whether or not the
- file system has a sensible notion of execute permission.
- This removes an ugly check for &tos_filesys.
- mint.h,util.c,mem.c:
- Added a compile time option, JUNK_MEM, to deliberately fill
- the memory MiNT acquires with garbage; this is for debugging
- (to help track down silly failures to initialize memory) and
- not for production code.
- proc.c:
- Fixed a typo in init_proc() that was causing memory not to
- be initialized to 0 correctly. (Thanks are due to Stephen
- Usher for catching this one.)
- tosfs.c:
- Added a tos_rewinddir that works.
- file.h:
- Added blocks and blksize fields to the XATTR structure, and
- provided a few extra reserved fields for future expansion.
- (Also: re-arranged some fields to match what the gcc library
- already has.)
- file.h, main.c:
- Add sleep, wake, and wakeselect to the kernel info structure;
- some device drivers will need these.
- biosfs.c:
- Make nodskchng do a Getbpb on the (non-existent) device; the officially
- documented way of forcing a disk change requires this.
- file.h,filesys.c,*fs.c:
- Remove the "flag" argument from the dskchng function, and
- have the kernel check Rwabs for E_CHNG; this should save
- a lot of duplication in user file systems, since everyone
- really has to do this anyways.
- dosdir.c:
- Make sure that Fsfirst names can be null-terminated.
- filesys.c:
- Oops: a misplaced bracket in disk_changed was causing
- write-protected disks to always appear to have changed!
- tosfs.c:
- Made it illegal to delete or truncate an open file.
-
- PATCHLEVEL17::
-
- version.h:
- I think we can call this version an "alpha" one, now. No more
- major features remain to be added (fingers crossed, here).
- filesys.c,dosdir.c,*fs.c,file.h:
- Media change detection code; this is now the kernel's
- responsibility. This necessitated an additional function
- for file systems; I hope this is the last one.
- main.c,biosfs.c:
- Check what kind of machine we're on, and adjust what devices are
- present accordingly. The rs232 file has been renamed to "modem1".
- WARNING: This will break existing code that uses the name "rs232".
- filesys.c:
- Code for loading file systems (finally!)
- bios.c,context.s:
- Made Rwabs, Getbpb, and Mediach save registers (since device
- drivers often don't, and loadable file systems will be calling
- these directly).
- main.c:
- Implemented the "struct kerinfo" to pass information to loadable
- file systems.
- filesys.c:
- Re-wrote path2cookie to provide for symbolic links; a new routine
- (relpath2cookie) helps us out.
- unifs.c:
- Code for creating, reading, and deleting symbolic links.
- *fs.c, dosfile.c, file.h:
- Changed the way file opens and creates are done; the former
- (*getdev) routine for file systems has been split into
- (*creat) and (*getdev), both of which are quite a bit simpler.
- This whole scheme is clearer, less work for the file system,
- and will support symbolic links much better.
- various places:
- Add security checks. This is still pretty sad, but at least it
- can provide one with a modicum of protection against silly
- mistakes.
- dosfile.c:
- Require write permission on a file before changing its date via
- Fdatime.
- tosfs.c:
- Cleaned up and streamlined a bit, and fixed tos_readlabel.
- *fs.c,dosdir.c,file.h:
- Changed the file system "getxattr", "chmode", "chown", and
- "chattr" functions to take a single file cookie instead of a
- (directory, name) pair. This should make most uses of these
- functions (e.g. in name lookups) more efficient. Also,
- changed the readdir() function to return a file cookie to go
- along with the newly read file name.
- main.c:
- If "init.prg" isn't found, try starting GEM instead.
- unifs.c:
- Re-arranged to allow for symbolic links.
- filesys.c:
- Implemented some media change routines.
- dosdir.c:
- Added Fchown and Fchmod system calls.
- dosdir.c:
- Added security check for Fattrib().
-
- PATCHLEVEL16::
-
- lots of places:
- Try to make TRACE() and DEBUG() messages more useful for people
- who don't know the internals of the kernel, and who just want to
- debug their own programs.
- dosdir.c:
- Added Flink, Fsymlink, Freadlink, and Dcntl system calls.
- *fs.c,file.h:
- Added a new mode to Dpathconf() to determine whether the
- file system uses DOS type file naming conventions, ordinary
- Unix type, or _POSIX_NO_TRUNC type.
- file.h:
- Add an "fscntl" field to the file system structure.
- tosfs.c:
- Fix the mode values returned from getxattr() (regular files
- have type S_IFREG, not S_IFMT).
- proc.c:
- Zero the child's srchdta field after fork_proc(); otherwise,
- the accounting for Fsfirst/Fsnext can get messed up. Thanks
- again to S. Henson.
- mem.c:
- As Steve Henson pointed out, resetting the effective user and
- group id's in exec_region is probably a Bad Idea.
- dosdir.c:
- Change Dopendir/Dclosedir to use umalloc and ufree instead of
- kmalloc and kfree.
-
- PATCHLEVEL15::
-
- dosdir.c:
- When terminating, clean up after any Fsfirst/Fsnext sequences that
- didn't go to completion.
- tosfs.c:
- Streamlined garbage collection code, and also corrected a bug in
- which file indices used in directory searches could be garbage
- collected.
- file.h, *fs.c:
- Add symlink and hard link functions.
- pipefs.c:
- Make FIONWRITE work again (a line was accidentally deleted).
- Make sure that Fselect() will select any pipes that have been
- closed.
- dossig.c:
- Put back the user id check in Pkill.
- dos.c, proc.c:
- Make sure that the "euid" and "egid" fields are set with
- the Psetuid and Psetgid calls. Also, make sure the fields
- are reset after an exec.
- mem.c:
- Make exec_region shrink the process 'mem' and 'addr' tables
- to the default again if extra regions had been allocated.
- dosmem.c:
- Get rid of the magic number "100", and introduce a maximum user
- settable priority MAX_NICE so that the kernel can make sure
- that a process that needs to run (e.g. an aborted vfork) will
- run first by setting its priority to MAX_NICE+1.
- proc.c:
- Make sure the initial process memory tables are zeroed.
- proc.c:
- Adjust the process scheduling algorithm (yet again!). Also,
- rename "nice_count" to "curpri".
- dosdir.c,dos.c:
- Added Dopendir, Dreaddir, Drewinddir, Dclosedir system calls.
- *fs.c:
- Made readdir return a file index (inode number) if it's not
- doing a TOS mode search.
- biosfs.c:
- PHYSCONS is such an ugly name; CONSOLE makes more sense.
-
- PATCHLEVEL14::
-
- mem.c:
- Allow the kernel to dynamically allocate memory region
- descriptors if it runs out; also, increase the number that
- it starts with by default.
- util.c:
- Made it harmless to call kfree with a NULL argument.
- proc.h,mem.c,dosmem.c,proc.c:
- Eliminate the 64 region per process limit, by making the "mem"
- and "addr" arrays dynamically allocated.
- proc.c:
- Change the code for selecting which process to run next; if more
- than one process is on the ready queue, we use a per-process
- counter to prevent high priority processes from hogging all the
- time.
- dosmem.c:
- Release a process' controlling terminal (by setting it's process
- group back to 0) if the process is a process group leader and
- is exiting.
- dosfile.c,tty.c,*fs.c:
- Made do_open set terminals up correctly on open/close, and
- handle assigning process groups to them. Also, made the terminal's
- process group be set automatically on Fforce(-1,...).
- main.c,timeout.c:
- Added AKP's code for better resolution of time usage.
- DELETED FILES:
- xlate.c, xlate32.s, newdisk.s
- everywhere:
- Removed all references to NEED_TRANSLATION. This is getting to be a
- pain to maintain, and nobody seems to actually use it.
- *fs.c:
- Fixed the ENAMETOOLONG detection code in readdir (thanks, Steve!).
- timeout.c:
- New function, nap, for processes that are in busy loops waiting for
- an event that probably won't happen for a while (e.g. waiting for
- the user to hit a key); use e.g. nap(60) to sleep for 60 milliseconds
- instead of yield().
- mem.c:
- create_env() should use the value from the current process' basepage,
- since this may *not* be the same as the environment the process
- was actually started with
- dosfile.c:
- Make Fcntl(fh, arg, F_SETFL) leave the file sharing mode alone as well
- as the read/write mode.
- unifs.c:
- Change the name "fifo" to "pipe"; change "drva", "drvb" etc. into just
- "a", "b" etc.
- dosmem.c:
- Make it possible to provide a name with Pexec mode 104. Provide a new
- mode 106 that starts a process in the background and automatically
- detaches the process TPA from the parent's memory.
-
- PATCHLEVEL13::
-
- biosfs.c:
- Made sure that tty_getchar() won't see (long) negative values
- returned from a successful read, by clearing the high bit
- of read values.
- *fs.c,atarierr.h:
- Made file systems responsible for dealing with "." and "..";
- introduced a new (fake) EMOUNT error to indicate when ".." is
- found in a root directory (this is for the benefit of the
- unified file system code)
- dosdir.c,filesys.c:
- Changes to allow for the unified file system.
- unifs.c, makefile:
- New file, for a "unified" file system.
- filesys.c, *fs.c:
- Renamed denyaccess() to denyshare().
- dosdir.c:
- Changed getname() to work from the root down instead of from
- the directory up; this should work better for mounting and
- symbolic links.
- dosdir.c:
- Moved the check for a drive specifier (A:\FOO) in Dsetpath to
- where it should have been, namely before any use of the drive.
- biosfs.c,pipefs.c:
- In opendir, make sure the directory structure is properly
- initialized.
- dos.c:
- Changed snice and srenice to pnice and prenice; also modified the
- return values to be 16 bit (for the normal case), and 32 bit
- negative for errors, so that low priority processes can be
- distinguished from errors.
- debug*.c:
- The Bconstat() check for the printer should be applied to device
- 0, not 1.
-
- PATCHLEVEL12::
-
- dosdir.c,filesys.c:
- Re-wrote Fsfirst/next to use opendir/readdir/closedir. Re-wrote
- the pat_match function to work correctly (at least, according
- to the TOS rules :-).
- *fs.c, file.h:
- Added opendir/readdir/closedir calls to file systems to allow
- more general file systems; also changed getattr into getxattr
- (again, to allow file systems with extra goodies), setattr into
- chattr, and added chown and chmod calls. Deleted sfirst/snext
- file system entry points, and the Xsfirst/Xsnext system calls.
- *fs.c,file.h,dosfile.c,dosdir.c:
- Changed file systems to have separate calls for reading/writing
- volume labels. Added checks to Fattrib and Fcreate to avoid creating
- files with bad attributes (e.g. FA_LABEL or FA_DIR and anything
- else).
- main.c:
- Change the definition of tosvers so that TOS 1.0 corresponds
- to tosvers == 0x100, not tosvers == 0. Also, clean up the
- code for testing TOS versions.
- WARNING: This may break RAM TOS versions. I doubt it matters.
- bios.c,main.c:
- Always set the kbshft variable, so that kbshift is more
- efficient.
- dos.c:
- Eliminated the old code that allowed Super(-1L) to work (GEMDOS
- doesn't support this, so why should MiNT?)
- dos.c:
- Added GEMDOS date and time routines, and made sure that
- datestamp and timestamp are initialized properly when
- MiNT is started.
- mem.c:
- Increased the size of the buffer used for reading relocation
- information in load_region.
- *fs.c, dosfile.c:
- Changed the filesystem getdev call to return a file cookie
- (this saves a call to lookup on every open).
- *fs.c, filesys.c:
- Eliminated static variables, changed all routines that used to
- return pointers to cookies to take an extra argument (a pointer
- to the place to put the result).
- tosfs.c:
- Turn O_COMPAT sharing mode into O_DENYNONE (after making other
- appropriate changes to the access modes).
- debugold.c:
- Updated to reflect changes in debug.c.
- debug.c:
- Added calls to va_end where appropriate.
- debug.c:
- Before, hitting a key paused debugging output; now, debug_ws
- checks the device that output is going to, so that e.g. if it's
- going to the MIDI port, the output is paused when a character
- arrives on the MIDI port.
- mem.c:
- Made exec_region use O_DENYNONE sharing mode instead of O_DENYW
-
- PATCHLEVEL11::
-
- dosfile.c:
- Forbid closing file handles < 0; this will prevent accidental
- destruction of the BIOS handles.
- dosfile.c:
- Change Fbiosdev to be MIDI specific, rename it to Fmidipipe, and
- move it to dosfile.c. The semantics are a bit different, too;
- see the comments in dosfile.c.
- bios.c:
- Really fix the MIDI output routines, this time. (sigh)
-
- PATCHLEVEL10::
-
- signal.c:
- Fixed a typo in the message printed when bombs occur. Also,
- removed the copying of data from the supervisor stack to the
- BIOS area -- this was causing very strange problems, and it's
- not clear that the info would be useful under MiNT anyway.
- Finally, all this is only supposed to happen for certain
- signals, not for any random killings.
-
- PATCHLEVEL9::
-
- file.h, *fs.c:
- Changed the definition of the DTA buffer to free up space for
- user/group id fields and an extended attributes field. Made
- sfirst/snext use the 'aux' field of the directory cookie
- as an index.
- dos.c:
- Fixed Talarm() to return the number of seconds left before an
- alarm, not the number of milliseconds.
- dosdir.c:
- New system calls, Xsfirst/Xsnext, for accessing file systems
- with long (>12 character) names.
- signal.c:
- Fill in the BIOS post-mortem dump error correctly after
- bus errors, address errors, etc. Also, made the "bomb" replacement
- routine give the process basepage address and program counter,
- as suggested by AKP.
- tosfs.c:
- Fixed the tos_lookup bug that was causing bus errors during file
- opens.
-
- PATCHLEVEL8::
-
- tosfs.c:
- Made opens with O_COMPAT sharing mode always open for both reading
- and writing; this is so broken TOS programs that write to read-only
- handles will continue to work.
- file.h, tty.c:
- Added TIOCGWINSZ/TIOCSWINSZ and the appropriate window size
- fields to the tty structure to support them.
- dossig.c:
- Remove user id checks (for now). Make it impossible to catch
- SIGSTOP.
- bios.c:
- Fix so Bconout returns a value (it really should, at least for
- the printer).
- mem.c:
- Don't context switch and retry alloc_region; file systems and some
- parts of the kernel aren't expecting the context switch, and besides
- the previous change makes this tactic less likely to be helpful.
- mem.c:
- Don't allocate *all* of the memory to the basepage, leave some for
- the kernel and other programs.
- pipefs.c:
- Add a check for broken pipes when a program is trying to write
- atomically.
- dosmem.c:
- Block job control signals during a vfork instead of ignoring
- them; this will result in the "right" thing happening after
- the exec (since the blocked signals will then be unblocked).
- tosfs.c:
- Eeek! Fixed a very serious bug in the garbage collection
- routines ("i" was used where "j" should have been in a loop:
- result: things could be garbage collected that shouldn't
- have been!)
- procfs.c:
- changed the return value from "dfree" to more accurately indicate
- the free memory in the system, and to also provide information
- about the smallest unit of allocable memory (currently a longword)
- *fs.c,dosfile.c,dosdir.c,filesys.c:
- instead of passing fcookies to file systems, pass pointers to
- them; this should slightly improve efficiency, and greatly
- improve portability (otherwise, compilers used to make
- installable file systems would have to have the same structure
- passing/return conventions as the one that compiled the kernel)
- dos.c:
- new system call, Srenice(), to change priority of a different
- process
- dos.c:
- change Fbiosdev() system call to take a pid argument
- proc.h, dosfile.c:
- add per-file descriptor flags for things like "close on exec"
- file.h, mem.c, *fs.c:
- new file open mode, O_EXEC, for the kernel to use in Pexec
- rendez.c, dos.c:
- new file from AKP to implement a simple and fast message based
- IPC; the new system call is Pmsg. Also note that the syscall number
- of Pmsg is 0x125, which used to be used by Fbiosdev; Fbiosdev has
- been moved to 0x126.
- filesys.c:
- applied Steve Henson's patches to improve path2cookie's handling of
- repeated slashes
- proc.h:
- MAX_OPEN should be 32, not 20!
- mem.c:
- Ignore "close on exec" flag for the standard handles (for some
- reason, bash manages to set these for 0,1,2; this is probably a bug
- in the port of bash, but on the other hand it's unlikely that
- anyone would really want to close the standard handles when doing
- an exec, anyway)
- tty.c:
- Fixed RAW mode reads on terminals so that they're no longer
- terminated by '\r' or '\n' (and so that pty slaves aren't forced
- to read just 1 character at a time). Thanks to AKP for catching
- this.
-
- PATCHLEVEL7::
-
- *fs.c:
- Cleaned up the Dpathconf() return values to better reflect
- reality, and made the code a little easier to understand.
- bios.c:
- Adjust bcostat() parameters so that V:\MIDI and V:\KBD call
- the right (wrong) device (BIOS devices 3 and 4 are mixed
- up for Bcostat).
- dosmem.c:
- Made sure that Malloc(0L) always returns a NULL pointer.
- dosfile.c:
- Made Fclose() of handles 0, 1, 2, and 3 restore the default
- mappings. (Apparently TOS _does_ do this, after all.)
- bios.c:
- AHDI 3.1 added a new parameter to Rwabs; we now pass that
- along too.
- timeout.c:
- Make canceltimeout() free the memory used by the time out
- descriptor. (another Fselect bug)
- signal.h:
- Removed ABORT and ALARM from list of signals that are reported
- by the kernel.
- proc.c:
- Moved checkalarms() to do_wakeup_things() so that short time outs
- will be properly recognized; this fixes a nasty bug in Fselect.
-
- PATCHLEVEL6::
-
- pipefs.c:
- Make writes of 1024 or fewer bytes atomic. Also, increase pipe
- buffer size to 4096.
- tosfs.c:
- Make O_EXCL and O_TRUNC bits useful.
- tosfs.c,pipefs.c,filesys.c:
- Fully implement file sharing modes for tosfs and pipefs. A new
- routine (denyaccess) is provided in filesys.c for checking
- file open modes and determining conflicts (if any).
- pipefs.c:
- If a process writes on a broken pipe while ignoring SIGPIPE,
- the write now returns -1. (Thanks, Stephen)
- debug.c, bios.c:
- Applied bammi's patches to PATCHLEVEL 5 to fix some typos.
-
- PATCHLEVEL5::
-
- debug.c, bios.c:
- Applied AKP's debugging output patches, to allow TRACE and
- DEBUG output to go to serial ports as well as the printer.
-
- PATCHLEVEL4::
-
- dos.c:
- NEW SYSTEM CALL: Fbiosdev() to control redirection of BIOS
- devices.
- bios.c, proc.h:
- Added binput and boutput arrays to allow for per-process redirection
- of BIOS device input and output to GEMDOS file handles.
- biosfs.c:
- Changed "mdi" to "midi".
- WARNING: this change could (I suppose) break existing code.
- util.c:
- Added a umalloc() function to allocate memory in user space,
- and modified the various sfirst routines to use this to
- allocate space for patterns instead of kmalloc.
- dosdir.c,file.h:
- Added an FS_CASESENSITIVE flag to control conversion of file
- names to upper case for TOS domain processes.
- dosdir.c, *fs.c:
- Made sfirst/snext functions take an extra argument, the length
- of the file name field in the DTA buffer (so that we can provide
- Xsfirst/Xsnext functions that can work with longer names)
- mem.c:
- Fixed exec_region so that the close-on-exec flag works.
- filesys.c:
- Made path2cookie take the name of the place to store the last
- component of the path name as an argument (instead of always
- storing it in the global variable temp1).
- biosfs.c:
- Added code for O_NDELAY on bios devices.
- tosfs.c:
- Cleaned up garbage collection a bit -- I hope this fixes the
- problems with running out of indices.
- filesys.c:
- Returned the special parsing code for CON:, AUX:, etc.
- file.h:
- OOPS! The flock structure was missing an element (l_whence). It
- was added.
- WARNING: This change may break existing code.
- util.c:
- Made kmalloc take a long parameter, just in case installable
- file systems need lots of memory.
- file.h, atarierr.h, pipefs.c:
- Made file modes compatible with _FLK specification. Also
- added the ELOCKED and ENSLOCK errors to atarierr.h, and made
- pipefs.c use ELOCKED instead of EACCDN.
- WARNING: this *will* break existing programs. In particular, mgr
- no longer works :-( because O_NDELAY has changed. (this was
- temporarily patched)
- dos.c,dosfile.c:
- Added Flock() system call.
- mem.c:
- Made the initial user stack pointer low enough so that syscall.s
- won't run into the end of memory if the user makes a system call
- right away and doesn't push many parameters (the code in syscall
- always tries to copy a large chunk of the caller's stack).
- dosmem.c:
- Made vfork'd processes ignore job control signals (thanks to
- Stephen for pointing out how some shells rely on BSD's similar
- behaviour).
-
- PATCHLEVEL3::
-
- dosfile.c, file.h, *fs.c, bios.c:
- Changed f_select to use the new timeout mechanism, and provided
- routines in device drivers to wake up selecting processes.
- proc.h:
- New queue, SELECT_Q, for processes doing "select", to match above
- changes
- dos.c:
- Changed t_alarm to use the new timeout mechanism.
- timeout.c,proc.h:
- Added a new "timeout" mechanism, so that processes can specify
- an action to be taken when a counter expires.
- various places:
- Cleaned up TRACE and DEBUG output
- proc.c:
- Set current directory based on the TOS current directory
- when MiNT is starting up.
- debug.c:
- Added AKP's "trace" mode patch
- filesys.c:
- Replaced strcmp() for . and .. with direct comparisons, again
- per AKP.
- tosfs.c:
- Improved search performance a bit (indicies are now allocated
- at the beginning of the list, instead of at the end)
- main.c, version.h:
- Introduced PATCHLEVEL for alpha and beta test versions
- util.c:
- Made kmalloc() try the kernel memory region first for small
- regions, to cut down fragmentation of the user's memory space
- proc.h:
- Made the system stacks bigger, to compensate for the bigger
- contexts now that there's FPU support
- dosmem.c:
- Fixed bug with Pexec mode 6 (thanks again, AKP)
- biosfs.c:
- Changed FD0 to STDIN, FD1 to STDOUT, etc.
- WARNING: this change could break existing code
- filesys.c:
- '/' is no longer a directory separator for MiNT domain processes
- (few were using it, and it simplifies things to be able to
- assume '\' is the only such separator).
- WARNING: this change could break existing code
- all over the place:
- Changed the way directories/files are stored. We now have
- "file cookies" for directories, instead of strings. We
- also now have two directories per drive per process
- (a root and current).
- minixfs.c:
- Removed from the main compile, and MINIX_FS symbol was also
- removed -- this will be a loadable file system someday
- (soon, I hope).
- various places:
- Added Alex Kiernan's patches to support compilation under
- Lattice C v5
- proc.h, context.s:
- Added Alex Kiernan's FPU co-processor patches. WARNING: this
- changes the layout of the proc structure in memory, and so
- breaks "ps" and similar programs.
- proc.c:
- Changed sleep() to take the wait condition as an argument; this
- means that fewer things need to know the internals of the
- PROC structure
- various places:
- Added AKP's T_TOSTOP flag changes
- minixfs.c:
- Changed the 8K buffer in do_change to a static variable; our
- stacks aren't *that* big!
- intr.s:
- Fixed a typo that was causing serious problems with the bus
- error and other exception codes on the TT (thanks for
- catching this, Allan).
- dosmem.c,signal.c:
- Corrected the GEMDOS termination vector code (the system stack
- was being corrupted if the user's code returned). Thanks to
- Julian Reschke for catching this error.
- ===========================================================================
- version 0.8
-
- biosfs.c, pipefs.c:
- fix ^C and ^Y to send the signals to the whole process group,
- and also to make sure processes don't read these keys if
- they're turned into signals
- intr.s,dossig.c:
- fix exception handlers to be more careful about the distinction
- between being in or out of the kernel
- intr.s, syscall.s, main.c:
- make sure interrupts are off before changing any vectors
- bios.c:
- fixed the annoying problems with CTRL-ALT-Fx sometimes leaving
- keys in the buffer
- signal.c:
- forced p_sigreturn() with no signal pending to unwind the
- *whole* signal stack, in case there were multiple signals
- pending at the time the user did a longjmp() (or whatever
- prompted the Psigreturn())
- dosmem.c:
- p_wait3 now supports the WUNTRACED bit; if this isn't set,
- processes stopped due to job control are *not* returned
- dosmem.c:
- removed dLibs kludge -- some programs rely on p_parent being
- non-zero to tell them that they're not accessories
- various places:
- cleaned up job control stuff to be more Unix like
- mem.c,util.c:
- added a new memory map for the kernel -- this should ease
- the problems with programs grabbing all of available memory
- mem.c,dosmem.c:
- incorporated Allan's bugfixes; alternative RAM should work now
- signal.c, main.c, intr.s:
- integrated signals with normal exceptions, so that e.g.
- a bus error raises SIGBUS. This improves the survivability
- of the kernel, so that a bus error resulting from a bad
- system call parameter won't kill MiNT, just the offending
- process.
- proc.c:
- kludge to let low priority processes run every so often, even
- in the presence of a high priority process that is ready to run
- atarierr.h:
- ENMFIL is -49, not -47 -- so much for Abacus' docs :-)
- procfs.c:
- changes to allow read/write from process space
- minixfs.[ch]:
- changed lots of function parameter types to avoid promotion and
- prototype problems with 32 bit code
- bios.c:
- changed IOREC to IOREC_T to avoid name conflicts with some osbind.h
- biosfs.c:
- made mouse driver change the line A mouse position variables, so MGR
- will work with bigscrn and similar large screen emulators
- minixfs.c:
- new version from Stephen, now supports floppies and other removable
- media
- mem.c, dosmem.c, dos.c:
- added code to support new TT TOS calls Mxalloc and Maddalt, plus
- program flags for loading/mallocing in alternate memory
- bios.c,biosfs.c,dosfile.c:
- changed so that bios handles 0 and 1 can be redirected just like
- handle 2 (via the new file handles -3 and -2 respectively; AUX:
- and PRN: now refer to these files, and RS232 and CENTR to the
- physical devices)
- dosdir.c:
- Dsetdrv() fixed to return an error indication when one happens
- dos.c:
- fixed Super() bug (thanks Stephen)
- minixfs.c:
- incorporated changes to handle 1K sector sizes
-
- =============================================================================
- version 0.7
-
- minixfs.c:
- new file, courtesy of Stephen N. Henson (olorin@tardis.cs.ed.ac.uk)
- this is still "under construction"; see minixfs.doc for more details
- bios.c:
- CTRL-ALT-UNDO now raises SIGQUIT, for the benefit of people with
- foreign ROMs (some have trouble with ^\)
- filesys.c:
- changed pathname resolution code so that multiple slashes in a file
- name have the same effect as single slashes. POSIX mandates this,
- and some Unix programs expect it, too
- dosmem.c:
- changed do_vfork() code so that the text segment of processes is
- *not* saved in a fork() if the process has separate text, data, and
- bss segments; this saves a fair bit of memory
- proc.c:
- changed the process initialization code to better deal with job
- control; also changed handle 2 to be AUX: (as under TOS) rather
- than PRN:
- bios.c:
- added CTRL-ALT-F5 (show memory usage) and CTRL-ALT-F6
- (show processes)
- filesys.c:
- make explicit the fact the individual file names are limited to
- 14 characters
- everywhere:
- change FILENAME_MAX to PATH_MAX
- mem.c:
- fixed up comments and debugging/trace info for load_region
- dossig.c:
- NEW SYSTEM CALL: Psigpending() returns the set of signals that
- have been sent to the process, but not yet delivered.
- dos.c, dosdir.c:
- NEW SYSTEM CALLS:
- Sysconf(n) returns information about the global limits of the
- currently running version of MiNT
- Dpathconf(name, n) returns information about the file system that
- the file "name" is located on
- bios.c:
- allow CTRL-ALT-C, CTRL-ALT-\, and CTRL-ALT-Z to force a SIGINT,
- SIGQUIT, or SIGTSTP, respectively, even if the terminal is in raw
- mode
- various places:
- call zero() instead of bzero()
- context.s,intr.s:
- changes to make MiNT TT compatible. Thanks to Allan Pratt for this!
- biosfs.c, tosfs.c, pipefs.c, procfs.c:
- fsfirst/fsnext return all upper case in TOS domain now, but
- lower case (or mixed) in MiNT domain; this is to try to wean
- programmers off of the habit of assuming everything is upper case
- (and converting accordingly)
- biosfs.c:
- made mouse compatible with TOS ALT-cursor keys (the Y direction was
- wrong before)
- intr.s:
- IPL 7 before reboot (thanks, Allan)
- version.h, main.c:
- made version numbering a bit easier (big deal)
- main.c:
- AARGH! The cookie jar stuff was plain wrong (the last cookie should
- have the total number of slots, not just the ones that are free).
- main.c:
- pass current environment along to init.prg, instead of forcing an
- empty environment
- signal.c:
- corrected killpg() bug (wasn't checking signals, so the current
- process didn't get the signal until later)
- mem.c, dosmem.c:
- made sure that all sizes would always be rounded to the nearest
- longword. Just in case they aren't, Malloc(-1L) rounds down to the
- next smallest longword.
- lots of places:
- memory handling was overhauled completely; kmalloc now allocates
- memory from the same space as do m_alloc and p_exec, so there is
- no artificial constraint on the number of processes
- ===========================================================================
- version 0.6
-
- dos.c:
- added Talarm() and Pause() system calls
- bios.c, tty.c, pipefs.c:
- added real tty structures that programs can manipulate
- proc.c:
- added some sanity checks for things like stack overflow
- signal.c:
- revamped signal handling so that Psigreturn() no longer needs an
- argument.
- dosmem.c:
- made Pexec'ing processes immune to SIGINT, SIGHUP, and SIGTSTP
- intr.s:
- fixed the Psigreturn race condition bug
- biosfs.c, pipefs.c, filesys.c, util.c:
- added case-insensitive string comparison routine, and modified the
- file systems to use it
- bios.c, console.c:
- changed return values of status calls from 1 to -1, to be TOS
- compatible
- dos.c:
- added new calls to get resource usage, and set resource limits
- dosfile.c:
- added new call, f_select
- signal.c:
- changed so stopped processes always have a return code of 0177
- biosfs.c:
- added a fake "third button" on the mouse (you get it by holding down
- a shift key and a mouse button)
- made mouse_read return at least 1 byte
- bios.c, proc.c, biosfs.c:
- added code to check for CTRL-ALT-key combinations on every
- process switch; thus, debugging, rebooting, etc. do not require
- waiting for a read from the keyboard. Also, ^C sends a SIGINT
- immediately, and ^Z (SIGTSTP) and ^\ (SIGQUIT) take effect
- right away, too.
- CTRL-ALT-DEL supported for TOS < 1.4
-
- =========================================================================
- version 0.5
-
- First publically released version (made available for FTP as a beta test)
-
-