On Fri, Jan 03, 2003 at 01:24:08PM +0100, Richard Stevens wrote:
> and put them in my rc.local script. That does the job as a workaround. I'll
> also try the patch later. Hopefully it works with my 2.4.20 kernel. Jaroslav,
> do you know if the patch got rejected completely or only delayed? Any
> information from the kernel masters about the subject?
I just tried the patch and I use vanilla 2.4.20 kernel. Only the fourth chunk
is not appliable, bacause it seems sort of applied already. The function
register_sound_special that is in the kernel looks a lot like the alsa patch
wants it to look like. The part that is not applied is the shortcut with the
unknown devices - the kernel source prefers a long switch statement, rather
than using goto.
There is also the part with the switch statement.
The kernel source has changed like
- switch (unit & 15) {
+ switch (unit) {
and the alsa patch suggests
- switch (unit & 15) {
+ switch (chain) {
where chain is assigned a value of unit % SOUND_STEP a few lines before that.
The name of the device with minor 2 became hardcoded as midi00 (again rejection
of a part of the alsa patch).
That's about it. The rest of the fourth chunk is applied (more or less) and the
rest of the patch is not applied at all.
I applied the patch almost manually, and for the curious, here is my diff.
You'd need to patch -R, but do read until the end first.
--- /usr/src/linux/drivers/sound/sound_core.c.bak 2003-01-03 20:48:46.000000000
+0900
+++ /usr/src/linux/drivers/sound/sound_core.c 2003-01-03 21:47:59.000000000 +0900
@@ -173,10 +173,10 @@
return r;
}
- if (r == low)
+ if (r < SOUND_STEP)
sprintf (name_buf, "%s", name);
else
- sprintf (name_buf, "%s%d", name, (r - low) / SOUND_STEP);
+ sprintf (name_buf, "%s%d", name, r / SOUND_STEP);
s->de = devfs_register (devfs_handle, name_buf,
DEVFS_FL_NONE, SOUND_MAJOR, s->unit_minor,
S_IFCHR | mode, fops, NULL);
@@ -217,7 +217,7 @@
* 15 *16 unused
*/
-static struct sound_unit *chains[16];
+static struct sound_unit *chains[SOUND_STEP];
/**
* register_sound_special - register a special sound node
@@ -233,7 +233,7 @@
{
char *name;
- switch (unit) {
+ switch (unit & 15) {
case 0:
name = "mixer";
break;
@@ -382,7 +382,7 @@
void unregister_sound_special(int unit)
{
- sound_remove_unit(&chains[unit&15], unit);
+ sound_remove_unit(&chains[unit % SOUND_STEP], unit);
}
EXPORT_SYMBOL(unregister_sound_special);
@@ -480,7 +480,7 @@
int soundcore_open(struct inode *inode, struct file *file)
{
int chain;
- int unit=MINOR(inode->i_rdev);
+ int unit = MINOR(inode->i_rdev);
struct sound_unit *s;
struct file_operations *new_fops = NULL;
The /dev/sound devices are created as expected with this patch.
I could do "modprobe -r snd-pcm-oss", but once I decided to do
"modprobe -r snd-cmipci" next I got a segfault, and "modprobe -r snd-emu10k1"
(right after that) froze the modprobe process.
# lsmod | grep ^snd
snd-cmipci 0 0 (deleted)
snd-opl3-lib 6628 0 [snd-cmipci]
snd-mpu401-uart 3120 0 [snd-cmipci]
snd-emu10k1 0 0 (deleted)
snd-ac97-codec 30436 0 [snd-emu10k1]
snd-pcm 60576 0 [snd-cmipci snd-emu10k1]
snd-timer 11080 0 [snd-opl3-lib snd-pcm]
snd-rawmidi 13824 0 [snd-mpu401-uart snd-emu10k1]
snd-util-mem 1392 0 [snd-emu10k1]
snd-hwdep 4256 0 [snd-opl3-lib snd-emu10k1]
snd-seq-device 4268 0 [snd-opl3-lib snd-emu10k1 snd-rawmidi]
snd 27980 0 [snd-cmipci snd-opl3-lib snd-mpu401-uart snd-emu10k1
snd-ac97-codec snd-pcm snd-timer snd-rawmidi snd-util-mem snd-hwdep snd-seq-device]
The directory /dev/sound has disappeared already.
I hope someone posts a more soffisticated patch soon. This was simply my
attempt to "make it compile" but it obviously doesn't work :(
--
/^^^^^^^^^^^^^^^^^^^^^^^^^^^\/^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\
/ Georgi Georgiev (-< / It was a brave man that ate the \
\ [EMAIL PROTECTED] /\ .o)\ first oyster. /
/ +81(90)6266-1163 V_/_ |(/)/ \
\___________________________/\__________________________________/
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Alsa-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-user