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