*BSD News Article 24175


Return to BSD News archive

Newsgroups: comp.os.386bsd.development
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!elroy.jpl.nasa.gov!usc!howland.reston.ans.net!spool.mu.edu!bloom-beacon.mit.edu!eru.mt.luth.se!kth.se!news.kth.se!olof
From: olof@fysik4.kth.se (Olof Franksson)
Subject: spl*(), interrupt, and configuration problem!?
Message-ID: <OLOF.93Nov18163927@ikaros.fysik4.kth.se>
Sender: usenet@kth.se
Nntp-Posting-Host: ikaros.fysik4.kth.se
Organization: Physics IV, Royal Institute of Technology, S-100 44 Stockholm,
	Sweden
Date: Thu, 18 Nov 1993 15:39:27 GMT
Lines: 40

spl*(), interrupt handler routine, and configuration problems!?

A)
spl*() seems to have no effect upon interrupt handlers which belongs to
other device drivers than the one which makes the spl*() calls. Is this 
a bug, a feature, or my lack of understanding? Is there a way around this?

The following has been observed on a FreeBSD 1.0.35 system:
splhigh() was used in order to lock out an interrupt handler routine in a 
new device driver. This strategy seemed to work. It locked out the interrupt 
handler routine which was specified for the device driver with the "vector" 
entry in the configuration file (/sys/i386/conf/SYSTEM).
When trying to share an interrupt handler routine (indirectly siointr) 
between several device drivers (use the mouse for X and an image memory) 
splhigh() (and the other ones) failed to have the lock out effect unless 
the "wanted" interrupt handler routine "belonged" to the device driver.

In the following configurations the routine "impoll" selects if "imintr",
or "siointr", is called. The lock out effect was checked by using global
semaphore variables:
spl*() works for "im":
  device sio0 at isa? port "IO_COM1" tty 
  device im0  at isa? port 0x320 iomem 0xa80000 iosiz 0x80000 tty irq 4 vector impoll

spl*() works for "sio":
  device sio0 at isa? port "IO_COM1" tty irq 4 vector impoll
  device im0  at isa? port 0x320 iomem 0xa80000 iosiz 0x80000 tty

B)
Another "unexpected" effect was that the system failed to link systems
with the following line (no "tty"):
  device im0  at isa? port 0x320 iomem 0xa80000 iosiz 0x80000 irq 4 vector impoll
indicating that a "mask" variable was lacking. Is this this the intended
funtionallity? On 386bsd 0.1 systems this configuration could be used without
any problems.



	Olof Franksson