-
Federico Vaga authored
This breaks the complexity of the zio_arm_trigger() and the constraints on the raw_io() implementation. It will also semplify future implementation of the multi-shot. Actually, the idea is that we are not firing the trigger, we are just arming it. Of course it should be as fast as possible but we are not loosing any dead line. Theoretically, the arm event should happen a reasonable amount of time before the trigger fires, and the purpose of the raw_io() function is to prepare the hardware for the acquisition. The measured overhead of the scheduling is 2.6us under stress conditions. The measure was taken in the following conditions: virtual machine: 64bit 2x3.2Ghz 742M stress program : stress --cpu 2 zio modules : zio-zero, zio-buf-kmalloc, zio-trig-user measurement : system-tap 2.6us is the scheduling time. Another important difference it that on error is the scheduled work that will call zio_trigger_abort_disable() to clean up trigger's flag free allocated blocks. This patch introduce an incompatibility only with those drivers which complete their I/O within raw_io() (e.g. zio_zero). These drivers now must call zio_trigger_data_done to notify that the data is ready Signed-off-by: Federico Vaga <federico.vaga@cern.ch>
2c8d6b8e