James Pearson wrote:
I've just discovered that I can't load snd-ioctl32 from 1.0.15rc2 on RHEL4/CentOS4 - dmesg reports:
snd_ioctl32: Unknown symbol snd_ctl_elem_read snd_ioctl32: Unknown symbol snd_ctl_elem_write
snd-ioctl32 with 1.0.15rc1 loads fine ...
The problem is still there with 1.0.15rc3 - however, I've found the cause of the issue:
EXPORT_SYMBOL(snd_ctl_elem_read) and EXPORT_SYMBOL(snd_ctl_elem_write) have been removed from alsa-kernel/core/control.c - see:
http://hg.alsa-project.org/alsa-kernel/rev/efd5ab99655e
I guess this is OK for more recent kernels, but still needed for RHEL4/CentOS4 2.6.9 kernels
I can work round the problem by putting these back into acore/control.c
I've attached a patch which patches acore/control.patch
James Pearson
--- ./acore/control.patch.dist 2007-09-21 09:41:25.000000000 +0100 +++ ./acore/control.patch 2007-09-26 12:07:14.809107031 +0100 @@ -1,5 +1,5 @@ ---- ../alsa-kernel/core/control.c 2007-05-17 08:15:24.000000000 +0200 -+++ control.c 2007-05-24 21:25:20.000000000 +0200 +--- ../alsa-kernel/core/control.c 2007-09-21 09:41:26.000000000 +0100 ++++ control.c 2007-09-26 12:06:00.936446240 +0100 @@ -1,3 +1,4 @@ +#define __NO_VERSION__ /* @@ -13,7 +13,25 @@ #include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/time.h> -@@ -1387,25 +1389,44 @@ +@@ -716,6 +718,8 @@ int snd_ctl_elem_read(struct snd_card *c + return result; + } + ++EXPORT_SYMBOL(snd_ctl_elem_read); ++ + static int snd_ctl_elem_read_user(struct snd_card *card, + struct snd_ctl_elem_value __user *_control) + { +@@ -779,6 +783,8 @@ int snd_ctl_elem_write(struct snd_card * + return result; + } + ++EXPORT_SYMBOL(snd_ctl_elem_write); ++ + static int snd_ctl_elem_write_user(struct snd_ctl_file *file, + struct snd_ctl_elem_value __user *_control) + { +@@ -1383,25 +1389,44 @@ static int snd_ctl_fasync(int fd, struct /* * ioctl32 compat */