标签:match poi 函数调用 string struct lock ifd you prope
写驱动时碰到如下函数调用,涉及知识点 static inline extern
include/of.h中有如下定义:
extern struct device_node *of_find_node_by_name(struct device_node *from,
const char *name);
static inline struct device_node *of_find_node_by_name(struct device_node *from,
const char *name)
{
return NULL;
}
drivers/of/base.c中定义如下:
/**
* of_find_node_by_name - Find a node by its "name" property
* @from: The node to start searching from or NULL, the node
* you pass will not be searched, only the next one
* will; typically, you pass what the previous call
* returned. of_node_put() will be called on it
* @name: The name string to match against
*
* Returns a node pointer with refcount incremented, use
* of_node_put() on it when done.
*/
struct device_node *of_find_node_by_name(struct device_node *from,
const char *name)
{
struct device_node *np;
unsigned long flags;
raw_spin_lock_irqsave(&devtree_lock, flags);
for_each_of_allnodes_from(from, np)
if (np->name && (of_node_cmp(np->name, name) == 0)
&& of_node_get(np))
break;
of_node_put(from);
raw_spin_unlock_irqrestore(&devtree_lock, flags);
return np;
}
EXPORT_SYMBOL(of_find_node_by_name);
后来发觉是一场误会:
#ifdef CONFIG_OF
extern struct device_node *of_find_node_by_name(struct device_node *from,
const char *name);
#else /* CONFIG_OF */
static inline struct device_node *of_find_node_by_name(struct device_node *from,
const char *name)
{
return NULL;
}
#endif /* CONFIG_OF */
标签:match poi 函数调用 string struct lock ifd you prope
原文地址:https://www.cnblogs.com/idyllcheung/p/13186884.html