Asynchronous input - callback only called once
Tim Lee <timothy1ee <at> yahoo.com>
2004-07-03 20:24:43 GMT
I posted this problem earlier here:
I'm trying to set up asynchronous reads which triggers
an interrupt at the end of each scan; however, the
callback only gets called once.
Here are some additional details and questions:
DAQ card: NI PCI-1200, uses the ni_labpc driver.
Comedi: latest CVS snapshot
I traced through the driver ISR (labpc_interrupt())
and its subsequent call to comedi_event using print
statments. In the ISR, it doesn't enter any if
statements except for the TRIG_COUNT one, then it
calls comedi_event. In comedi_event, it goes to the
async->cb_func(mask,async->cb_arg); line. All this
seems to be right.
There is a comment near the async->cb_func() which
/* XXX bug here. If subdevice A is rt, and
* subdevice B tries to callback to a normal
* linux kernel function, it will be at the
* wrong priority. Since this isn't very
* common, I'm not going to worry about it. */
Does this comment apply to my situation? My callback
function is in a non-real time kernel module.
I set up my comedi cmd with a TRIG_RT flag. Do I need
to be setting my kernel module to real-time priority
somehow? (This doesn't seem to be done in the it.c
I've also been reading that enabling DMA sometimes
causes problems for other ppl. I'm not sure what this
is, if I have this enabled or not, or if this might be
a cause of this problem. Opinions?
I think Frank wrote this driver and tested it for the
lab-pc-1200 (differnt card). Has anyone used this
driver with the pci-1200? Could this problem be as
simple as the interrupt not being properly
acknowledged in the driver?
At this point, I don't know what else to try. Does
anyone have any debugging suggestions that might
narrow this problem down?
Thanks a lot,
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around