long-term data acquisition with ni_mio_common cards

Hello,

I've been trying to fix a problem with the ni_pcimio driver in which the
32-bit MITE register read by mite_bytes_transferred() (naturally,
apparently) overflows, which causes the count variable in
mite_handle_a_linkc() to become negative. The calling user process' read
requests then hang, which means that the driver is only able to acquire
up to 2^32 bytes worth of data at a time. (Actually, right now
mite_bytes_transferred() returns a signed int, but changing it to an
unsigned int only doubles the amount of possible recording time, and
doesn't fix the problem.)

Has anyone else performed successful long-term data acquisition with any
of the comedi-supported cards? ds sent me a mail that implied that it
once worked correctly, but I don't see any evidence in the code implying
that the overflow was ever detected/handled.

At any rate, I've spent some time trying to figure out the appropriate
behavior -- what fields of the async struct to change, etc. -- but
haven't been able to come up with a decent fix. Does anyone have any
suggestions on places to look, perhaps, in other drivers that handle this
sort of problem? Any other tips/help would be appreciated, as I'd like to
avoid simply having a user-level cron job explicitly stopping and
starting acquisition every 18 hours or so.

mc

Received on 2002-06-18Z20:25:40