move from deferring vd requests with a task per message to a ring
authordlg <dlg@openbsd.org>
Fri, 23 Jan 2015 12:41:23 +0000 (12:41 +0000)
committerdlg <dlg@openbsd.org>
Fri, 23 Jan 2015 12:41:23 +0000 (12:41 +0000)
commitbef976591be8739534d2f3f6a760bba91b4a6a46
tree1920ad376063d2573389474024439acd1d95ef94
parent4f190dc567f0c6ab6c86a96164aac91627ddb7d4
move from deferring vd requests with a task per message to a ring
of pointers to vd requests, and a single task to notify the taskq
that there's work on the ring.

the ring is modelled on what you usually get with network cards,
which is an array with a producer and consumer index. the interrupt
handler fills an entry in the ring at the producers index and
increments it. the task reads entries at the consumer index and
increments it until it reaches the same value as the producer.

tested and slightly tweaked by kettenis@
ok kettenis@
sys/arch/sparc64/dev/vdsp.c