zoukankan      html  css  js  c++  java
  • static inline extern等概念

    写驱动时碰到如下函数调用,涉及知识点 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 */

  • 相关阅读:
    索引
    convert 时间转换
    SQL中的case when then else end用法
    SVN安装图解
    dos 命令
    阿里云服务器相关知识
    mvc知识应用
    MVC分页
    mvc系统过滤器
    .net 接口
  • 原文地址:https://www.cnblogs.com/idyllcheung/p/13186884.html
Copyright © 2011-2022 走看看