diff -r -u alsa-driver-0.5.3/include/emux_mem.h alsa-driver-0.5.3-patched/include/emux_mem.h --- alsa-driver-0.5.3/include/emux_mem.h Fri Jan 21 12:38:39 2000 +++ alsa-driver-0.5.3-patched/include/emux_mem.h Thu Feb 17 18:23:07 2000 @@ -55,6 +55,7 @@ snd_emux_memblk_t *snd_emux_mem_alloc(snd_emux_memhdr_t *hdr, int size); int snd_emux_mem_free(snd_emux_memhdr_t *hdr, snd_emux_memblk_t *blk); int snd_emux_mem_avail(snd_emux_memhdr_t *hdr); +int snd_emux_mem_total(snd_emux_memhdr_t *hdr); /* functions without mutex */ snd_emux_memblk_t *__snd_emux_mem_alloc(snd_emux_memhdr_t *hdr, int size, snd_emux_memblk_t **prevp); diff -r -u alsa-driver-0.5.3/include/seq_oss_legacy.h alsa-driver-0.5.3-patched/include/seq_oss_legacy.h --- alsa-driver-0.5.3/include/seq_oss_legacy.h Thu May 20 21:30:27 1999 +++ alsa-driver-0.5.3-patched/include/seq_oss_legacy.h Thu Feb 17 18:16:34 2000 @@ -43,6 +43,7 @@ #define SND_OSS_SNDCTL_SEQ_THRESHOLD _IOW ('Q',13, int) #define SND_OSS_SNDCTL_SYNTH_MEMAVL _IOWR('Q',14, int) #define SND_OSS_SNDCTL_FM_4OP_ENABLE _IOW ('Q',15, int) +#define SND_OSS_SNDCTL_SYNTH_MEMTOTAL _IOR ('Q',16, int) #define SND_OSS_SNDCTL_SEQ_PANIC _IO ('Q',17) #define SND_OSS_SNDCTL_SEQ_OUTOFBAND _IOW ('Q',18, oss_seq_event_t) #define SND_OSS_SNDCTL_SEQ_GETTIME _IOR ('Q',19, int) diff -r -u alsa-driver-0.5.3/kernel/seq/oss/seq_oss_ioctl.c alsa-driver-0.5.3-patched/kernel/seq/oss/seq_oss_ioctl.c --- alsa-driver-0.5.3/kernel/seq/oss/seq_oss_ioctl.c Sat Jan 8 21:11:11 2000 +++ alsa-driver-0.5.3-patched/kernel/seq/oss/seq_oss_ioctl.c Thu Feb 17 18:16:34 2000 @@ -114,6 +114,13 @@ val = snd_seq_oss_synth_ioctl(dp, dev, cmd, carg); return put_user(val, (int *)arg) ? -EFAULT : 0; + case SND_OSS_SNDCTL_SYNTH_MEMTOTAL: + debug_printk(("seq_oss_ioctl: mem total\n")); + if (get_user(dev, (int *)arg)) + return -EFAULT; + val = snd_seq_oss_synth_ioctl(dp, dev, cmd, carg); + return put_user(val, (int *)arg) ? -EFAULT : 0; + case SND_OSS_SNDCTL_FM_4OP_ENABLE: debug_printk(("seq_oss_ioctl: 4op\n")); if (get_user(dev, (int *)arg)) diff -r -u alsa-driver-0.5.3/lowlevel/generic/emux_mem.c alsa-driver-0.5.3-patched/lowlevel/generic/emux_mem.c --- alsa-driver-0.5.3/lowlevel/generic/emux_mem.c Fri Jan 21 12:38:40 2000 +++ alsa-driver-0.5.3-patched/lowlevel/generic/emux_mem.c Thu Feb 17 18:22:42 2000 @@ -209,12 +209,25 @@ return size; } +/* + * return total memory size + */ +int snd_emux_mem_total(snd_emux_memhdr_t *hdr) +{ + unsigned int size; + down(&hdr->block_mutex); + size = hdr->size; + up(&hdr->block_mutex); + return size; +} + EXPORT_SYMBOL(snd_emux_memhdr_new); EXPORT_SYMBOL(snd_emux_memhdr_free); EXPORT_SYMBOL(snd_emux_mem_alloc); EXPORT_SYMBOL(snd_emux_mem_free); EXPORT_SYMBOL(snd_emux_mem_avail); +EXPORT_SYMBOL(snd_emux_mem_total); EXPORT_SYMBOL(__snd_emux_mem_alloc); EXPORT_SYMBOL(__snd_emux_mem_find_prev); EXPORT_SYMBOL(__snd_emux_mem_free); diff -r -u alsa-driver-0.5.3/lowlevel/generic/emux_oss.c alsa-driver-0.5.3-patched/lowlevel/generic/emux_oss.c --- alsa-driver-0.5.3/lowlevel/generic/emux_oss.c Fri Jan 21 12:38:40 2000 +++ alsa-driver-0.5.3-patched/lowlevel/generic/emux_oss.c Thu Feb 17 18:20:51 2000 @@ -253,6 +253,11 @@ if (emu->memhdr) return snd_emux_mem_avail(emu->memhdr); return 0; + + case SND_OSS_SNDCTL_SYNTH_MEMTOTAL: + if (emu->memhdr) + return snd_emux_mem_total(emu->memhdr); + return 0; } return 0;