Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Oct 1996 13:47:15 -0700 (MST)
From:      Richard Straka <straka@inficad.com>
To:        questions@FreeBSD.ORG
Subject:   Registering ISR for LKM Device Driver
Message-ID:  <Pine.BSI.3.91.961013132349.1989A-100000@inficad.com>

next in thread | raw e-mail | index | archive | help

I am in the process of writing several device drivers for FreeBSD to 
interact with custom realtime test equipment.  This hardware is interrupt 
driven and hence, I have to register the interrupt service routines with 
the kernel. It is highly desirable to use the Loadable Module mechanism 
for inclusion of the device drivers into the kernel. I have the following 
questions.

  - Where can I get a template of an LKM device driver that uses 
     interrupts?

  - What is the relationship between register_intr(), register_imask(), 
     and update_intr_masks() in /sys/i386/isa/isa.c?  Can I use these 
     calls in some sequence to register my LKM ISR's?  Looking at the 
     code, some of the functionality of these 3 routines look redundant.

  - How do I unregister the interrupts and clean up the interrupt masks 
    when I unload the module. Does the function unregister_intr() from 
    isa.c take care of this for me?

  - What is the distinction between a fast and slow interrupt? Some of 
     the interrupts from my test equipment may be rather high frequency 
     >1000HZ and require low latency. Do I need to take additional 
     precautions in my drivers if I use fast interrupts?

Any help on these issues would be greatly appreciated.

Thanks in advance.   

Richard Straka
straka@inficad.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSI.3.91.961013132349.1989A-100000>