New meaning oss_sysinfo.nummixers

From: Alfonso Sabato Siciliano <alfix86_at_gmail.com>
Date: Fri, 04 Oct 2024 20:57:17 UTC
Hi guys!

I was inactive for months, one week ago I reinstalled CURRENT on my main
laptop (and others). The meaning of "struct oss_sysinfo.nummixers"
changed. Let's say:

#include <sys/soundcard.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>

int main()
{
        int fd;
        struct oss_sysinfo si;
const char *mixer="/dev/mixer0"; //or your mixer

        if ((fd = open(mixer, O_RDWR)) == -1) {
                printf("Error open()\n");
                return (-1);
        }

        if (ioctl(fd, SNDCTL_SYSINFO, &si) == -1) {
                printf("Error SNDCTL_SYSINFO\n");
                return (-1);
        }

        close(fd);
        printf("nummixers: %d\n", si.nummixers);
        return (0);
}

Output "nummixers: 7", But

% sysctl dev.pcm
... prints 6 devices dev.pcm.[0-5].*

% ls /dev/mixer*
/dev/mixer0 /dev/mixer1 /dev/mixer2 /dev/mixer3 /dev/mixer4 /dev/mixer5

6 mixers from 0 to 5. But now oss_sysinfo.nummixers is 7, it was 6 until
some months ago.

I thought the new value could be the max index, in the case some mixers
are closed, example /dev/mixer0 /dev/mixer2 /dev/mixer5. But in this
case 'nummixers' should be 5 not 7.

Maybe the hidden /dev/mixer is in the count (6 + 1 = 7).

Same situation on 3 laptops. So, what is the new meaning for
oss_sysinfo.nummixers?

Thank you in advance for any reply (now I am working/busy on another
subsystem, I hope to look at audio(4) again in the future).

Best regards,
Alfonso