Things to fix and add in ZIO

After the beta3 tag a lot happened, but there are still some things we want to add to the
code base.

Code Changes

  • Implement the bus abstraction, to split drivers and devices
  • Add a binary control block in /sys to reflect current status and set config
  • Support DMA to user space

New Features

A discussion of our suggestion for these is on the mailing list archive: http://lists.ohwr.org/sympa/arc/zio/2011-11/msg00026.html

  • Interleaved channels
  • Double buffering
  • Multi-threaded access
  • fasync support
  • Tag complex data structures
  • Implement channel flags and alarms

New Drivers

  • Cleanup and publish the AD7888 driver we are using internally
  • Complete and publish the line discipline for uart-driven input and output
  • Write zio-tzero, a zio-zero driver with internal timing for samples (or add it to zio-zero)
  • Add internal timing to zio-gpio
  • Write a buffers/zio-buf-circ, a buffer that discards control structures and regenerates them as needed, to reduce overhead when little blocks are used.
  • Write a trigger based on high-resolution timers
  • Write more drivers for real hardware (accelerometers, DACs and so on)

Audit, Consistency, Documentation

  • Update documentation to really reflect code status
  • Audit all spinlocks and related stuff, writing a policy for drivers triggers and buffer
  • Audit all allocations, again writing a policy document
  • Offer defaults in zio-core wherever possible, likes push_block