[movitz-devel] Re: The reactions of gc to hard-drive reads

Elliott ejohnson at kvpt.org
Fri Jun 18 06:19:38 UTC 2004


Hi Frode,

Yeah its been fun looking at that file and testing out reads and 
writes :)  Peter and I were talking and he's shown me a few tricks 
to help with consolidating code.  If your interested I made a 
practice file I can send to you. 

It adds a few more registers and instances of controllers 1, 2, and 3.  
I'll need to hook up my pci-ide controller to test #2.  

I do have a few issues that might interest you with testing reads to 
controllers 0 and 1.  I've taken your advice below.

> When you get errors like this, try to get a backtrace (using the
> function muerte:backtrace or the top-level :bt, and report the output.

On writes to the second drive controller's primary drive [I assume to 
other drives also I just don't want to risk data] I get an error.  I'll 
show you below, but to kind-of outline the process: I first read a sector 
from a drive [in this case primary slave] and then try to write that data 
on to the secondary master.  This process erupts into an exception "107":

	X86-PC.HARDDISK> (hd-read-sectors 1 0 1)
	using 28 bits addressing
	#( A full sector ... )

	X86-PC.HARDDISK> (hd-write-sectors 2 0 *)
	using 28 bits addressing
	Error: Exception occurred: 107, EIP: #x891db, EAX: #x6d, ECX #x1a, ESI #x783be

Output of ":bt"

	<= (MUERTE::INVOKE-DEBUGGER-ON-DESIGNATOR ...)
	<2 (ERROR ...)
	<2 {Exception 107 in HD-WRITE-SECTORS at PC offset 891.
	<= (HD-WRITE-SECTORS #x2 #x0 (#xeb #x48 #x90 ...))
	<2 ((:ANONYMOUS-LAMBDA MUERTE::EVAL-FUNCALL #x0) ...)

I found losp/muerte/interupt.lisp which handles exceptions, but it seems 
like this type of exception might be a general case error.  I know you 
have a few of the error message values mapped out, but this there a way 
to figure out this ones meaning?
  
> Specifically, that error is due to my assuming that one won't want to
> allocate 16000 clumps (one clump is equal to two words, or eight
> bytes, so 63 sectors is just above this limit, see los0-gc.lisp) in
> one go. This limitation is probably too small for serious work, but
> for simple experimentation it might be ok.. or not? So fix los0-gc.

Yep I poped in there and adjusted the value.  Changing 16000 to 65537 
on line 192 of los0-gc.lisp allows for 256 sectors to be read or writen.  
I can now handle 131kb of data to and from disk, plus run out of memory 
a lot faster. :)  I'll if I can raise the amount of memory seen by los0 

Do you mind if I submit some trivial fixes to files that give warnings 
during compilation?  I've seen a few mentions of function referances and 
things that can be cleaned up.

-Elliott





More information about the movitz-devel mailing list