Fix the LINUX_SOUND_MIXER_INFO ioctl to return success after the
information is set to FreeBSD. It had been falling through to the end of linux_ioctl_sound() and returning ENOIOCTL. Noticed when running the Linux ALSA amixer tool. Add a LINUX_SOUND_MIXER_READ_CAPS ioctl which is used by the Skype v2.1.0.81 binary. Reviewed by: gavin MFC after: 2 weeks
This commit is contained in:
parent
d34b4913e6
commit
3e36dcd710
@ -1749,7 +1749,7 @@ linux_ioctl_sound(struct thread *td, struct linux_ioctl_args *args)
|
|||||||
strncpy(info.id, "OSS", sizeof(info.id) - 1);
|
strncpy(info.id, "OSS", sizeof(info.id) - 1);
|
||||||
strncpy(info.name, "FreeBSD OSS Mixer", sizeof(info.name) - 1);
|
strncpy(info.name, "FreeBSD OSS Mixer", sizeof(info.name) - 1);
|
||||||
copyout(&info, (void *)args->arg, sizeof(info));
|
copyout(&info, (void *)args->arg, sizeof(info));
|
||||||
break;
|
return (0);
|
||||||
}
|
}
|
||||||
case 0x0030: { /* SOUND_OLD_MIXER_INFO */
|
case 0x0030: { /* SOUND_OLD_MIXER_INFO */
|
||||||
struct linux_old_mixer_info info;
|
struct linux_old_mixer_info info;
|
||||||
@ -1757,7 +1757,7 @@ linux_ioctl_sound(struct thread *td, struct linux_ioctl_args *args)
|
|||||||
strncpy(info.id, "OSS", sizeof(info.id) - 1);
|
strncpy(info.id, "OSS", sizeof(info.id) - 1);
|
||||||
strncpy(info.name, "FreeBSD OSS Mixer", sizeof(info.name) - 1);
|
strncpy(info.name, "FreeBSD OSS Mixer", sizeof(info.name) - 1);
|
||||||
copyout(&info, (void *)args->arg, sizeof(info));
|
copyout(&info, (void *)args->arg, sizeof(info));
|
||||||
break;
|
return (0);
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return (ENOIOCTL);
|
return (ENOIOCTL);
|
||||||
@ -1774,6 +1774,10 @@ linux_ioctl_sound(struct thread *td, struct linux_ioctl_args *args)
|
|||||||
args->cmd = SOUND_MIXER_READ_STEREODEVS;
|
args->cmd = SOUND_MIXER_READ_STEREODEVS;
|
||||||
return (ioctl(td, (struct ioctl_args *)args));
|
return (ioctl(td, (struct ioctl_args *)args));
|
||||||
|
|
||||||
|
case LINUX_SOUND_MIXER_READ_CAPS:
|
||||||
|
args->cmd = SOUND_MIXER_READ_CAPS;
|
||||||
|
return (ioctl(td, (struct ioctl_args *)args));
|
||||||
|
|
||||||
case LINUX_SOUND_MIXER_READ_RECMASK:
|
case LINUX_SOUND_MIXER_READ_RECMASK:
|
||||||
args->cmd = SOUND_MIXER_READ_RECMASK;
|
args->cmd = SOUND_MIXER_READ_RECMASK;
|
||||||
return (ioctl(td, (struct ioctl_args *)args));
|
return (ioctl(td, (struct ioctl_args *)args));
|
||||||
|
@ -267,6 +267,7 @@
|
|||||||
#define LINUX_SOUND_MIXER_INFO 0x4d65
|
#define LINUX_SOUND_MIXER_INFO 0x4d65
|
||||||
#define LINUX_OSS_GETVERSION 0x4d76
|
#define LINUX_OSS_GETVERSION 0x4d76
|
||||||
#define LINUX_SOUND_MIXER_READ_STEREODEVS 0x4dfb
|
#define LINUX_SOUND_MIXER_READ_STEREODEVS 0x4dfb
|
||||||
|
#define LINUX_SOUND_MIXER_READ_CAPS 0x4dfc
|
||||||
#define LINUX_SOUND_MIXER_READ_RECMASK 0x4dfd
|
#define LINUX_SOUND_MIXER_READ_RECMASK 0x4dfd
|
||||||
#define LINUX_SOUND_MIXER_READ_DEVMASK 0x4dfe
|
#define LINUX_SOUND_MIXER_READ_DEVMASK 0x4dfe
|
||||||
#define LINUX_SOUND_MIXER_WRITE_RECSRC 0x4dff
|
#define LINUX_SOUND_MIXER_WRITE_RECSRC 0x4dff
|
||||||
|
Loading…
Reference in New Issue
Block a user