sndiod: Move controls out of the device structure
authorratchov <ratchov@openbsd.org>
Wed, 3 Mar 2021 10:00:27 +0000 (10:00 +0000)
committerratchov <ratchov@openbsd.org>
Wed, 3 Mar 2021 10:00:27 +0000 (10:00 +0000)
commit9958002099ab280e77824dedb8f85e7144901bcf
tree8efc8bf35e876bf3caf8ef40606b0a15e038a20f
parent74b220efb30d8b00307ad4dd56c66206bdfccf75
sndiod: Move controls out of the device structure

Moving to a global server-wide controls list is necessary to expose
controls that are not associated to a particular device (ex. a device
selector).

The current hack to use the device-side sioctl_desc->addr variable as
client-side key can't work anymore. So, we use a unique dynamically
allocated ctl->addr key; this is much cleaner. A new "scope" enum
(with two "void *" arguments) is used to determine what the control
does control. This adds flexibility and allows to easily add new
control types that are not associated to devices.

No behavior change.
usr.bin/sndiod/dev.c
usr.bin/sndiod/dev.h
usr.bin/sndiod/dev_sioctl.c
usr.bin/sndiod/siofile.c
usr.bin/sndiod/sock.c