Things to fix and add in ZIO
Even if beta 3 has been tagged in the repository and the patch has been sent out, the design phase is not finalized, and some things are still pending.
Code Changes
- Implement the bus abstraction, to split drivers and devices
- Make a single zio-core.ko module that includes default trigger and buffer
- Use cdev permissions so input is RO and output is WO
- Add a binary control block in /sys to reflect current status and set config
- Use owned kmem_cache structures for control blocks and other fixed-size structures
- Add code to change a trigger and a buffer at run time
- 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
- Complex data structures
- 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
- Add a cset to zio-zero with internal timing for samples
- Write drivers/zio-gpio.c for input and output with cset-level rate selection
- Write triggers/zio-trig-app-request (transparent trigger for streaming); this will be the default trigger
- Write an example buffer using special (non-kmalloc) memory
- 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
- Make zio-core include
- 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
- Remove file operations from triggers, offer zio_generic_fops and write a policy document
- Define an enable/disable policy for channel and csets; use and document it.