On 11/23/09 12:51 PM, Garrett D'Amore - sun microsystems wrote:
> Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
> This information is Copyright 2009 Sun Microsystems
> 1. Introduction
>     1.1. Project/Component Working Name:
>        /etc/audio_numbers
>     1.2. Name of Document Author/Supplier:
>        Author:  Garrett D'Amore
>     1.3  Date of This Document:
>       23 November, 2009
> 4. Technical Description
>
> Summary:
>
> This case introduces a new project-private statefile for the Boomer
> (PSARC 2008/318) audio subsystem.  The file will be shared between the
> kernel and userland.  This will replace the system/device/audio:default
> SMF service, so that no other startup service will be necessary.
>
> These changes are necessary to properly address CR 6902551 (audio service
> timeout not sufficient for service to start).
>   


I'm concerned about the choice of path, /etc/audio_numbers.
The customers/users are conditioned to think that /etc
is for things which the admin can tweak, edit, modify,
while /var is used for a lot of "system state" that does
not require human intervention.  This new file is clearly
for system state keeping, and not for human edit.

Why have you not chosen something like /var for a location?

Neal

> Binding:
>
> This case seeks Minor binding.
>
> Problem:
>
> Due to the way the Open Sound System API was originally specified (designed
> for Linux), we have to know the "number" of an audio device (e.g. /dev/dsp1
> would be "1") in the kernel, because these numbers are reported back from
> the kernel to userland via ioctls.
>
> The problem is that the enumeration of these numbers is done entirely in user
> space by devfsadm.
>
> Currently, we regenerate this information and send it down at each boot by
> performing a devfsadm operation during boot using an SMF service.  However,
> it turns out that devfsadm on some systems is quite expensive, and this can
> lead to timeouts in the audio SMF service
>
>
> Solution:
>
> We propose to move from regenerating this state (and autoconfiguring each
> device driver) at boot, and instead use a persistent state file to track
> this information.
>
> The state file will be called "/etc/audio_numbers", and will be written by
> devfsadm when it creates an audio link.  The contents will be lines that
> have the form
>
>       number<ws>driver<ws>instance<newline>
>
> <ws> is a sequence of one or more tabs or space characters.
> <newline> is an ASCII newline character.
>
> "number" will be the enumerated audio device number in decimal, i.e. the
> suffix of the /dev/dspXX or /dev/audioXX link.  (Also /dev/sound/XX, etc.)
>
> The "driver" is the name of the audio driver, e.g. "audiohd".
>
> The "instance" is the audio instance number.  This will normally be the same
> as the device instance (i.e. as from ddi_get_instance()), but for some devices
> it could be a different value.  (E.g. for a multiport device there could be
> multiple logical audio device instances per dev_info_t.  The actual value
> is the 2nd argument to audio_dev_alloc(9F) specified in Boomer, unless that
> value is zero, in which case the ddi_get_instance() value is assumed.) 
>
> Lines beginning with a hash mark (#) are treated as comments.
>
> Here is an example file:
>
> # Sample file - this is a comment
> 0     audiohd 0
> 1     usb_ac  0
> 2     audiosolo       0
> 3     audiosolo       1
> 4     usb_ac          1
>
> The /etc/audio_number file and its contents shall be deemed Project Private.
>
> The devfsadm audio link module will cease its traversal of the /dev tree,
> and instead rely on the statefile to determine suitable targets for symbolic
> links.
>
> Finally, we will be able remove the SMF facility sys/devices/audio, which
> is currently used to regenerate the state information on each boot. 
>
> This project will need to import the kobj interfaces for reading a file from
> kernel space.  While there is no case work behind these interfaces, we believe
> they are Consolidation Private based on existing contracts for their use
> from the Sun Cluster products.
>
> Imported Interfaces
>
>       kobj_open_file()        Consolidation Private
>       kobj_close_file()               "       "
>       kobj_getc()                     "       "
>
> Exported Interfaces
>
>       svc:/system/device/audio:default        EOF
>       /etc/audio_numbers                      Project Private
>
>
> 6. Resources and Schedule
>     6.4. Steering Committee requested information
>       6.4.1. Consolidation C-team Name:
>               ON
>     6.5. ARC review type: FastTrack
>     6.6. ARC Exposure: open
>
>   

Reply via email to