linux-4.4.1/__dma_request_channel()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#ed9e675c]
#backlinks
*説明 [#oeae4457]
-パス: 複数あり
--CONFIG_DMA_ENGINE 無効: [[linux-4.4.1/include/linux/dma...
--CONFIG_DMA_ENGINE 有効: [[linux-4.4.1/drivers/dma/dmaen...
-FIXME: これは何?
--説明
**引数 [#de93ff85]
-const dma_cap_mask_t *mask
--
--[[linux-4.4.1/dma_cap_mask_t]]
-dma_filter_fn fn
--
--[[linux-4.4.1/dma_filter_fn]]
-void *fn_param
--
**返り値 [#wcfb47fb]
-struct dma_chan *
--
--[[linux-4.4.1/dma_chan]]
**参考 [#g8f630c5]
*実装 [#jef20fab]
**CONFIG_DMA_ENGINE 無効: include/linux/dmaengine.h [#x95...
static inline struct dma_chan *__dma_request_channel(con...
dma_filter...
{
return NULL;
}
**CONFIG_DMA_ENGINE 有効: drivers/dma/dmaengine.c [#pced9...
/**
* __dma_request_channel - try to allocate an exclusive ...
* @mask: capabilities that the channel must satisfy
* @fn: optional callback to disposition available chann...
* @fn_param: opaque parameter to pass to dma_filter_fn
*
* Returns pointer to appropriate DMA channel on success...
*/
struct dma_chan *__dma_request_channel(const dma_cap_mas...
dma_filter_fn fn,...
{
struct dma_device *device, *_d;
struct dma_chan *chan = NULL;
int err;
-
--[[linux-4.4.1/dma_device]]
--[[linux-4.4.1/dma_chan]]
/* Find a channel */
mutex_lock(&dma_list_mutex);
-
--[[linux-4.4.1/mutex_lock()]]
--[[linux-4.4.1/dma_list_mutex(global)]]
list_for_each_entry_safe(device, _d, &dma_device...
-
--[[linux-4.4.1/list_for_each_entry_safe()]]
--[[linux-4.4.1/dma_device_list(global)]]
chan = private_candidate(mask, device, f...
-
--[[linux-4.4.1/private_candidate()]]
if (chan) {
/* Found a suitable channel, try...
* return it. We first set DMA_...
* balance_ref_count as this cha...
* published in the general-purp...
*/
dma_cap_set(DMA_PRIVATE, device-...
device->privatecnt++;
err = dma_chan_get(chan);
-
--[[linux-4.4.1/dma_cap_set()]]
--[[linux-4.4.1/dma_chan_get()]]
if (err == -ENODEV) {
pr_debug("%s: %s module ...
__func__, dma_c...
list_del_rcu(&device->gl...
} else if (err)
pr_debug("%s: failed to ...
__func__, dma_c...
else
break;
-
--[[linux-4.4.1/pr_debug()]]
--[[linux-4.4.1/list_del_rcu()]]
--[[linux-4.4.1/dma_chan_name()]]
if (--device->privatecnt == 0)
dma_cap_clear(DMA_PRIVAT...
-
--[[linux-4.4.1/dma_cap_clear()]]
chan = NULL;
}
}
mutex_unlock(&dma_list_mutex);
-
--[[linux-4.4.1/mutex_unlock()]]
pr_debug("%s: %s (%s)\n",
__func__,
chan ? "success" : "fail",
chan ? dma_chan_name(chan) : NULL);
return chan;
}
EXPORT_SYMBOL_GPL(__dma_request_channel);
-
--[[linux-4.4.1/EXPORT_SYMBOL_GPL()]]
*コメント [#y640fd2d]
終了行:
*参照元 [#ed9e675c]
#backlinks
*説明 [#oeae4457]
-パス: 複数あり
--CONFIG_DMA_ENGINE 無効: [[linux-4.4.1/include/linux/dma...
--CONFIG_DMA_ENGINE 有効: [[linux-4.4.1/drivers/dma/dmaen...
-FIXME: これは何?
--説明
**引数 [#de93ff85]
-const dma_cap_mask_t *mask
--
--[[linux-4.4.1/dma_cap_mask_t]]
-dma_filter_fn fn
--
--[[linux-4.4.1/dma_filter_fn]]
-void *fn_param
--
**返り値 [#wcfb47fb]
-struct dma_chan *
--
--[[linux-4.4.1/dma_chan]]
**参考 [#g8f630c5]
*実装 [#jef20fab]
**CONFIG_DMA_ENGINE 無効: include/linux/dmaengine.h [#x95...
static inline struct dma_chan *__dma_request_channel(con...
dma_filter...
{
return NULL;
}
**CONFIG_DMA_ENGINE 有効: drivers/dma/dmaengine.c [#pced9...
/**
* __dma_request_channel - try to allocate an exclusive ...
* @mask: capabilities that the channel must satisfy
* @fn: optional callback to disposition available chann...
* @fn_param: opaque parameter to pass to dma_filter_fn
*
* Returns pointer to appropriate DMA channel on success...
*/
struct dma_chan *__dma_request_channel(const dma_cap_mas...
dma_filter_fn fn,...
{
struct dma_device *device, *_d;
struct dma_chan *chan = NULL;
int err;
-
--[[linux-4.4.1/dma_device]]
--[[linux-4.4.1/dma_chan]]
/* Find a channel */
mutex_lock(&dma_list_mutex);
-
--[[linux-4.4.1/mutex_lock()]]
--[[linux-4.4.1/dma_list_mutex(global)]]
list_for_each_entry_safe(device, _d, &dma_device...
-
--[[linux-4.4.1/list_for_each_entry_safe()]]
--[[linux-4.4.1/dma_device_list(global)]]
chan = private_candidate(mask, device, f...
-
--[[linux-4.4.1/private_candidate()]]
if (chan) {
/* Found a suitable channel, try...
* return it. We first set DMA_...
* balance_ref_count as this cha...
* published in the general-purp...
*/
dma_cap_set(DMA_PRIVATE, device-...
device->privatecnt++;
err = dma_chan_get(chan);
-
--[[linux-4.4.1/dma_cap_set()]]
--[[linux-4.4.1/dma_chan_get()]]
if (err == -ENODEV) {
pr_debug("%s: %s module ...
__func__, dma_c...
list_del_rcu(&device->gl...
} else if (err)
pr_debug("%s: failed to ...
__func__, dma_c...
else
break;
-
--[[linux-4.4.1/pr_debug()]]
--[[linux-4.4.1/list_del_rcu()]]
--[[linux-4.4.1/dma_chan_name()]]
if (--device->privatecnt == 0)
dma_cap_clear(DMA_PRIVAT...
-
--[[linux-4.4.1/dma_cap_clear()]]
chan = NULL;
}
}
mutex_unlock(&dma_list_mutex);
-
--[[linux-4.4.1/mutex_unlock()]]
pr_debug("%s: %s (%s)\n",
__func__,
chan ? "success" : "fail",
chan ? dma_chan_name(chan) : NULL);
return chan;
}
EXPORT_SYMBOL_GPL(__dma_request_channel);
-
--[[linux-4.4.1/EXPORT_SYMBOL_GPL()]]
*コメント [#y640fd2d]
ページ名: