linux-4.4.1/snd_ctl_add()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#bc86c8b1]
#backlinks
*説明 [#x4e94b5c]
-パス: [[linux-4.4.1/sound/core/control.c]]
-FIXME: これは何?
--説明
**引数 [#i4be6ad1]
-struct snd_card *card
--
--[[linux-4.4.1/snd_card]]
-struct snd_kcontrol *kcontrol
--
--[[linux-4.4.1/snd_kcontrol]]
**返り値 [#vdf5ca8c]
-int
--
**参考 [#ufd59cf1]
*実装 [#d897f6a1]
/**
* snd_ctl_add - add the control instance to the card
* @card: the card instance
* @kcontrol: the control instance to add
*
* Adds the control instance created via snd_ctl_new() or
* snd_ctl_new1() to the given card. Assigns also an uni...
* numid used for fast search.
*
* It frees automatically the control which cannot be ad...
*
* Return: Zero if successful, or a negative error code ...
*
*/
int snd_ctl_add(struct snd_card *card, struct snd_kcontr...
{
struct snd_ctl_elem_id id;
unsigned int idx;
unsigned int count;
int err = -EINVAL;
if (! kcontrol)
return err;
if (snd_BUG_ON(!card || !kcontrol->info))
goto error;
-
--[[linux-4.4.1/snd_BUG_ON()]]
id = kcontrol->id;
if (id.index > UINT_MAX - kcontrol->count)
goto error;
down_write(&card->controls_rwsem);
-
--[[linux-4.4.1/down_write()]]
if (snd_ctl_find_id(card, &id)) {
up_write(&card->controls_rwsem);
dev_err(card->dev, "control %i:%i:%i:%s:...
id.iface,
id.device,
id.subdevice,
id.name,
id.index);
err = -EBUSY;
goto error;
-
--[[linux-4.4.1/snd_ctl_find_id()]]
--[[linux-4.4.1/up_write()]]
--[[linux-4.4.1/dev_err()]]
}
if (snd_ctl_find_hole(card, kcontrol->count) < 0...
up_write(&card->controls_rwsem);
err = -ENOMEM;
goto error;
-
--[[linux-4.4.1/snd_ctl_find_hole()]]
}
list_add_tail(&kcontrol->list, &card->controls);
card->controls_count += kcontrol->count;
kcontrol->id.numid = card->last_numid + 1;
card->last_numid += kcontrol->count;
id = kcontrol->id;
count = kcontrol->count;
up_write(&card->controls_rwsem);
-
--[[linux-4.4.1/list_add_tail()]]
for (idx = 0; idx < count; idx++, id.index++, id...
snd_ctl_notify(card, SNDRV_CTL_EVENT_MAS...
-
--[[linux-4.4.1/snd_ctl_notify()]]
return 0;
error:
snd_ctl_free_one(kcontrol);
-
--[[linux-4.4.1/snd_ctl_free_one()]]
return err;
}
EXPORT_SYMBOL(snd_ctl_add);
-
--[[linux-4.4.1/EXPORT_SYMBOL()]]
*コメント [#f656ad9e]
終了行:
*参照元 [#bc86c8b1]
#backlinks
*説明 [#x4e94b5c]
-パス: [[linux-4.4.1/sound/core/control.c]]
-FIXME: これは何?
--説明
**引数 [#i4be6ad1]
-struct snd_card *card
--
--[[linux-4.4.1/snd_card]]
-struct snd_kcontrol *kcontrol
--
--[[linux-4.4.1/snd_kcontrol]]
**返り値 [#vdf5ca8c]
-int
--
**参考 [#ufd59cf1]
*実装 [#d897f6a1]
/**
* snd_ctl_add - add the control instance to the card
* @card: the card instance
* @kcontrol: the control instance to add
*
* Adds the control instance created via snd_ctl_new() or
* snd_ctl_new1() to the given card. Assigns also an uni...
* numid used for fast search.
*
* It frees automatically the control which cannot be ad...
*
* Return: Zero if successful, or a negative error code ...
*
*/
int snd_ctl_add(struct snd_card *card, struct snd_kcontr...
{
struct snd_ctl_elem_id id;
unsigned int idx;
unsigned int count;
int err = -EINVAL;
if (! kcontrol)
return err;
if (snd_BUG_ON(!card || !kcontrol->info))
goto error;
-
--[[linux-4.4.1/snd_BUG_ON()]]
id = kcontrol->id;
if (id.index > UINT_MAX - kcontrol->count)
goto error;
down_write(&card->controls_rwsem);
-
--[[linux-4.4.1/down_write()]]
if (snd_ctl_find_id(card, &id)) {
up_write(&card->controls_rwsem);
dev_err(card->dev, "control %i:%i:%i:%s:...
id.iface,
id.device,
id.subdevice,
id.name,
id.index);
err = -EBUSY;
goto error;
-
--[[linux-4.4.1/snd_ctl_find_id()]]
--[[linux-4.4.1/up_write()]]
--[[linux-4.4.1/dev_err()]]
}
if (snd_ctl_find_hole(card, kcontrol->count) < 0...
up_write(&card->controls_rwsem);
err = -ENOMEM;
goto error;
-
--[[linux-4.4.1/snd_ctl_find_hole()]]
}
list_add_tail(&kcontrol->list, &card->controls);
card->controls_count += kcontrol->count;
kcontrol->id.numid = card->last_numid + 1;
card->last_numid += kcontrol->count;
id = kcontrol->id;
count = kcontrol->count;
up_write(&card->controls_rwsem);
-
--[[linux-4.4.1/list_add_tail()]]
for (idx = 0; idx < count; idx++, id.index++, id...
snd_ctl_notify(card, SNDRV_CTL_EVENT_MAS...
-
--[[linux-4.4.1/snd_ctl_notify()]]
return 0;
error:
snd_ctl_free_one(kcontrol);
-
--[[linux-4.4.1/snd_ctl_free_one()]]
return err;
}
EXPORT_SYMBOL(snd_ctl_add);
-
--[[linux-4.4.1/EXPORT_SYMBOL()]]
*コメント [#f656ad9e]
ページ名: