Interrupts sound drivers in Linux?

Kendall Bennett (KendallB@scitechsoft.com)
Wed, 10 Nov 1999 08:33:37 -0800


Hi Guys,

I have some general questions about how sound drivers are implemented
in Linux. What I am interested in knowing is how interrupts and
filling of DMA buffers is handled. From what I can work out the
driver exports an interface to the DMA buffers, such that calls to
read/write will write data into the DMA buffers directly, blocking
when full. It also seems that the select call can be used to
selectively block on I/O so that the user app can block when
necessary, being woken up when a portion of the DMA buffer is ready
for writing. So I have a couple of questions:

1. Are the DMA buffers handled in a dual 'ping-pong' type scheme,
with half the DMA buffers being read and the other written to? Is
some other more flexible scheme used.

2. How are the interrupts handle in the driver? Is the only
interrupt that is available the regular 'End-Of-DMA' interrupt, or
can the sound drivers make use of timer interrupts if desired?

3. I know that OSS supports a 'software mixer' in their drivers. I
assume this software mixer runs in kernel space, so in that case how
is mixing of multiple sounds handled using the software mixer?

The main reason I am asking is that we are interested in abstracting
the mechanisms that are used to implement sound drivers in different
systems. I already know how DOS, Windows and OS/2 do sound, and I am
interested in learning more about how Unix does it.

Thanks!

+---------------------------------------------------------------+
| SciTech Software - Building Truly Plug'n'Play Software! |
+---------------------------------------------------------------+
| Kendall Bennett | Email: KendallB@scitechsoft.com |
| Director of Engineering | Phone: (530) 894 8400 |
| SciTech Software, Inc. | Fax : (530) 894 9069 |
| 505 Wall Street | ftp : ftp.scitechsoft.com |
| Chico, CA 95928, USA | www : http://www.scitechsoft.com |
+---------------------------------------------------------------+

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/