*参照元 [#s470e2fd] #backlinks *説明 [#wa548cda] -パス: [[linux-2.6.33/sound/core/sound.c]] -FIXME: これは何? --マイナーデバイスの一覧を表示するための、 proc エントリ /proc/asound/devices を作成する。 **引数 [#z30ae554] -なし **返り値 [#z722e01a] -int -- --成功したら 0、失敗したら 0 以外(たぶん)。 --現状の実装では返り値は常に 0 のようだ。 **参考 [#wf4904d9] *実装 [#z9eaf6c9] int __init snd_minor_info_init(void) { struct snd_info_entry *entry; - --[[linux-2.6.33/snd_info_entry]] entry = snd_info_create_module_entry(THIS_MODULE, "devices", NULL); -devices という名前のエントリを作成する。 -親エントリは NULL を指定、つまり ALSA のルートエントリ(/proc/asound)に置く、 という意味。 --ちなみに作成時点では親エントリは NULL のままである。 後で登録するとき(snd_info_register() 呼び出し時)に、 ALSA のルートエントリに書き換えられる。 --[[linux-2.6.33/snd_info_create_module_entry()]] --[[linux-2.6.33/THIS_MODULE]] if (entry) { entry->c.text.read = snd_minor_info_read; if (snd_info_register(entry) < 0) { snd_info_free_entry(entry); entry = NULL; } } -entry->c は union 型。entry->c.text は struct snd_info_entry_text 型。 --[[linux-2.6.33/snd_info_entry_text]] -devices エントリが読み出されたら、snd_minor_info_read() が呼ばれるようにする。 --[[linux-2.6.33/snd_minor_info_read()]] -devices エントリを追加する。 親エントリは NULL が指定されているため、 ALSA の proc ルート(/proc/asound)に書き換えられる。 したがってパス名は /proc/asound/devices となる。 --[[linux-2.6.33/snd_info_register()]] -追加に失敗したら devices エントリを削除する。 --[[linux-2.6.33/snd_info_free_entry()]] snd_minor_info_entry = entry; return 0; -他の関数からも使うので、グローバル変数に突っ込んでおく。 --[[linux-2.6.33/snd_minor_info_entry(global)]] } *コメント [#je2a2717]