*参照元 [#if3b7956]
#backlinks
*説明 [#a3f6fdd2]
-パス: 複数あり
--CONFIG_DEBUG_DEVRES 有効: [[linux-4.4.1/include/linux/device.h]]
--CONFIG_DEBUG_DEVRES 無効: [[linux-4.4.1/drivers/base/devres.c]]
--[[linux-4.4.1/CONFIG_DEBUG_DEVRES]]
-FIXME: これは何?
--説明
**引数 [#g8979d45]
-dr_release_t release
--
--[[linux-4.4.1/dr_release_t]]
-size_t size
--
-gfp_t gfp
--
--[[linux-4.4.1/gfp_t]]
-int nid
--
**返り値 [#g15e5a9b]
-void *
--
**参考 [#q5e76f00]
*実装 [#yfa6cba8]
**CONFIG_DEBUG_DEVRES 有効: include/linux/device.h [#e391c0aa]
#define devres_alloc_node(release, size, gfp, nid) \
__devres_alloc_node(release, size, gfp, nid, #release)
-
--[[linux-4.4.1/__devres_alloc_node()]]
**CONFIG_DEBUG_DEVRES 無効: drivers/base/devres.c [#se1a3bb8]
/**
* devres_alloc - Allocate device resource data
* @release: Release function devres will be associated with
* @size: Allocation size
* @gfp: Allocation flags
* @nid: NUMA node
*
* Allocate devres of @size bytes. The allocated area is zeroed, then
* associated with @release. The returned pointer can be passed to
* other devres_*() functions.
*
* RETURNS:
* Pointer to allocated devres on success, NULL on failure.
*/
void * devres_alloc_node(dr_release_t release, size_t size, gfp_t gfp, int nid)
{
struct devres *dr;
-
--[[linux-4.4.1/devres]]
dr = alloc_dr(release, size, gfp | __GFP_ZERO, nid);
if (unlikely(!dr))
return NULL;
-
--[[linux-4.4.1/alloc_dr()]]
--[[linux-4.4.1/unlikely()]]
return dr->data;
-struct devres は先頭に struct devres_node があり、その後に size で指定したサイズの領域(data が指すアドレス)が確保されている。
}
EXPORT_SYMBOL_GPL(devres_alloc_node);
-
--[[linux-4.4.1/EXPORT_SYMBOL_GPL()]]
*コメント [#j72e6783]