freebsd-skq/sys/dev/sound/pcm
ariff e12a0ce02f Last major commit and updates for RELENG_7:
- Rework the entire pcm_channel structure:
  * Remove rarely used link placeholder, instead, make each pcm_channel
    as head/link of each own/each other. Unlock - Lock sequence due to
    sleep malloc has been reduced.
  * Implement "busy" queue which will contain list of busy/active
    channels. This greatly reduce locking contention for example while
    servicing interrupt for hardware with many channels or when virtual
    channels reach its 256 peak channels.

- So I heard you like v chan ... O RLY?
  Welcome to Virtual **Record** Channels (vrec, rec vchans, vchans for
  recording, Rec-Chan, you decide), the ultimate solutions for your
  nagging O_RDWR full-duplex wannabe (note: flash plugins) monopolizing
  single record channel causing EBUSY.  Vrec works exactly like Vchans
  (or, should I rename it to "Vplay" :) , except that it operates on the
  opposite direction (recording). Up to 256 vrecs (like vchans) are
  possible.

  Notes:
   * Relocate dev.pcm.%d.{vchans,vchanformat,vchanrate} to each of its
     respective node/direction:
       dev.pcm.%d.play.* for "play"   (cdev = dsp%d.vp%d)
       dev.pcm.%d.rec.*  for "record" (cdev = dsp%d.vr%d)
   * Don't expect that it will magically give you ability to split
     "recording source" (eg: 1 channel for cdrom, 1 channel for mic,
     etc). Just admit that you only have a *single* recording source /
     channel. Please bug your hardware vendor instead :)

- Bump maxautovchans from 4 to 16. For a full-fledged multimedia
  desktop/workstation with too many soundservers installed (esound,
  artsd, jackd, pulse/polypaudio, ding-dong pling plong mudkip fuh fuh,
  etc), 4 seems inadequate. There will be no memory penalty here, since
  virtual channels are allocate only by demand.

- Nuke/Rework the entire statically created cdev entries. Everything is
  clonable through snd own clone manager which designed to withstand many
  kind of abusive devfs droids such as:
      * while : ; do /bin/test -e /dev/dsp ; done
      * jot 16777216 0 | while read x ; do ls /dev/dsp0.$x ; done
      * hundreds (could be thousands) concurrent threads/process opening
	"/dev/dsp" (previously, this might result EBUSY even with just
	3 contesting threads/procs).
  o Reusable clone objects (instead of creating new one like there's no
    tomorrow) after certain expiration deadline. The clone allocator will
    decide whether to reuse, share, or creating new clone.
  o Automatic garbage collector.

- Dynamic unit magic allocator. Maximum attached soundcards can be tuned
  using tunable "hw.snd.maxunit" (Default to 512). Minimum is 16, and
  maximum is 2048.

- ..other fixes, mostly related to concurrency issues.

joel@ will do the manpage updates on sound(4).

Have fun.
2007-05-31 18:43:33 +00:00
..
ac97_if.m Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ac97_patch.c - AC97 quirk / patch cleanups. Most quirks doesn't work in general sense 2007-04-19 13:54:22 +00:00
ac97_patch.h - AC97 quirk / patch cleanups. Most quirks doesn't work in general sense 2007-04-19 13:54:22 +00:00
ac97.c Fix broken "rec" and "igain" introduced by previous commit. Convert 2007-05-28 14:09:06 +00:00
ac97.h - AC97 quirk / patch cleanups. Most quirks doesn't work in general sense 2007-04-19 13:54:22 +00:00
buffer.c Last major commit and updates for RELENG_7: 2007-05-31 18:43:33 +00:00
buffer.h buf_addr should be bus_addr_t rather than u_int32_t. 2007-05-07 02:46:48 +00:00
channel_if.m [stage: 5/9] 2007-03-16 17:16:24 +00:00
channel.c Last major commit and updates for RELENG_7: 2007-05-31 18:43:33 +00:00
channel.h Last major commit and updates for RELENG_7: 2007-05-31 18:43:33 +00:00
dsp.c Last major commit and updates for RELENG_7: 2007-05-31 18:43:33 +00:00
dsp.h Last major commit and updates for RELENG_7: 2007-05-31 18:43:33 +00:00
fake.c Spring cleanup on irrelevant NULL checking over M_WAITOK allocations. 2007-03-15 18:19:01 +00:00
feeder_fmt.c [stage: 5/9] 2007-03-16 17:16:24 +00:00
feeder_if.m Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
feeder_rate.c [stage: 6/9] 2007-03-16 17:16:56 +00:00
feeder_volume.c [stage: 3.1/9] 2007-03-16 17:14:19 +00:00
feeder.c Last major commit and updates for RELENG_7: 2007-05-31 18:43:33 +00:00
feeder.h [stage: 4/9] 2007-03-16 17:15:33 +00:00
mixer_if.m Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
mixer.c Last major commit and updates for RELENG_7: 2007-05-31 18:43:33 +00:00
mixer.h Nuke OSSV4_EXPERIMENT ifdefs from kludgy MIXER_SIZE definition 2006-09-30 01:24:22 +00:00
sndstat.c Last major commit and updates for RELENG_7: 2007-05-31 18:43:33 +00:00
sound.c Last major commit and updates for RELENG_7: 2007-05-31 18:43:33 +00:00
sound.h Last major commit and updates for RELENG_7: 2007-05-31 18:43:33 +00:00
vchan.c Last major commit and updates for RELENG_7: 2007-05-31 18:43:33 +00:00
vchan.h Last major commit and updates for RELENG_7: 2007-05-31 18:43:33 +00:00