Ben Gras [Mon, 4 Jul 2005 15:20:46 +0000 (15:20 +0000)]
A "fix" for bug no. 2 is to check if the process slot has disappeared.
Not a really good solution (as it might not catch situations in which this
is caused by another bug), but the forrest of checks necessary might be worse
than this quick fix - because when looking for the cause, I found some other
cases in which the PM would panic as well. See info in bug 2 for details.
Another fix is to delay notification of PM by SYSTASK of signals delivered
internally until after the reply (e.g. of exec()), because the reply would
be messed up otherwise (receiving the notify instead of reply). This caused
SIGTRAP not to be delivered properly with traced processes.
Ben Gras [Fri, 1 Jul 2005 09:39:47 +0000 (09:39 +0000)]
Fix to check for RDTSC instruction (above 486), and call another timing
function instead if RDTSC is unavailable. This makes minix run on 486
again :) (presumably lower as well).
Jorrit Herder [Thu, 30 Jun 2005 15:55:19 +0000 (15:55 +0000)]
Rewrite of process scheduling:
- current and maximum priority per process;
- quantum size and current ticks left per process;
- max number of full quantums in a row allow
(otherwise current priority is decremented)
Ben Gras [Thu, 30 Jun 2005 13:04:57 +0000 (13:04 +0000)]
Added formatting fixes for larger numbers in fsck and df; made mkfs
test for devices larger than 4GB, so it won't try to test them (and print
a warning message), but it will write the FS.
Ben Gras [Tue, 28 Jun 2005 11:58:17 +0000 (11:58 +0000)]
Removed max-inode check from mkfs because of 32-bit inode numbers in V3
FS. Tested by mkfs -i 200000, fsck, file system creating with 200000
inodes, fsck again.
Ben Gras [Mon, 27 Jun 2005 11:59:36 +0000 (11:59 +0000)]
Made src belong to bin in release cp.
Made /usr/include belong to bin in mtree.
Fixed compiler warning in fs/pipe.c.
Added mdb (minix debugger) manual page.
Added ethernet config function in setup script.
Jorrit Herder [Fri, 24 Jun 2005 16:24:40 +0000 (16:24 +0000)]
Cleaned up process table structure: removed p_type, p_pendcount.
Removed stop sequence when MINIX is shut down.
Disabled send mask checks --- to be replaced by proper mechanism.
Fixed bug relating to 'shutdown -x'.
Simplified clock accounting of realtime.
Updated Makefiles for mkdept script.
Ben Gras [Wed, 22 Jun 2005 15:22:34 +0000 (15:22 +0000)]
Workaround for fishy situation that caused checksum on outgoing packets
to be broken in certain cases. (Seemingly when 2 short packets sent
back-to-back.) Buffer alignment seems to fix this ...
Ben Gras [Mon, 20 Jun 2005 14:53:13 +0000 (14:53 +0000)]
Added function read_cpu_flags() that returns current cpu flags as a
long. This is used to check for interrupts being disabled at the time
of a lock() call, if enabled in config.h. The number of times this
happens is then counted in the kinfo structure. These events (recursive
lockings) lead to nasty race conditions.
Jorrit Herder [Mon, 20 Jun 2005 14:23:31 +0000 (14:23 +0000)]
Updated function key mapping because of possible changes to NOTIFY.
The TTY driver now only notifies the IS server about function key event,
but does not tell which keys are pressed. The IS servers queries the TTY
driver to find out about this.
Ben Gras [Mon, 20 Jun 2005 09:35:23 +0000 (09:35 +0000)]
Fixed a few quirks in misc.c
. MAX used where it should've been MIN
. buffer byte too short
. inobvious use of & with && without parantheses
. funny length checking
Ben Gras [Sun, 19 Jun 2005 23:16:08 +0000 (23:16 +0000)]
Fixed bug that caused the PM to brutalize the contents of the 'memory'
variable. Parsing worked, but future requests for the variable (such as
by the sysenv command) returned truncated data. This caused the system
(e.g. setup script) to think the amount of memory was tiny, and caused
the enabling of swapspace, while it is unnecessary.
Ben Gras [Sun, 19 Jun 2005 22:33:49 +0000 (22:33 +0000)]
Fixed nasty bug that would cause FS to loop forever in rw_scattered (while
syncing, for instance) if blocks are unwritable. This could happen if:
. write goes beyond device boundary to a block device
. write is done for a complete block or more; thus the
block is not retrieved first (at which point it would be noticed
it doesn't exist), but the buffer is simply allocated
. at write time, the device i/o doesn't succeed, but rw_scattered
doesn't understand this and loops forever trying to get the block
written.
Currently, if no blocks can be written, the loop aborts, leaving all
buffers intact but potentially dirty. When invalidate() is called on the
device, the buffers will disappear (even if dirty). Same story for if
the buffer is removed due to rmed from lru chain. There's not much we
can do about this, however - we can't keep these blocks around, forever
occupying a buffer in the buffer cache.
The second part of the solution is not to let unwritable buffers be
created in the first place. How to do this, however, without doing a
wasteful read first?
Ben Gras [Fri, 17 Jun 2005 13:45:40 +0000 (13:45 +0000)]
Select test-set imported from the minix contributions, with permission
to modify and distribute from Jose Manuel Gomez, the author
(jmgomez@linuxmail.org).