spi驱动中的这两函数实现的是什么功能?

发布于 2022-09-20 09:52:33 字数 1209 浏览 16 评论 0

int spi_add_adapter(struct spi_adapter *adap)
{
        printk("SPI: adding adapter %s\n", adap->name);
        INIT_LIST_HEAD(&adap->clients);
        down(&adapter_lock);//什么意思
        init_MUTEX(&adap->lock);
        list_add(&adap->adapters, &adapter_list);
        up(&adapter_lock);//什么意思
        return 0;       

static struct spi_adapter *__spi_get_adapter(const char *name)
{
        struct list_head *l;

        list_for_each(l, &adapter_list) {
struct spi_adapter *adap = list_entry(l, struct spi_adapter, adapters);

                if (strcmp(adap->name, name) == 0)
                        return adap;
        } //这函数什么功能?

        return NULL;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

羁拥 2022-09-27 09:52:33

本人理解up().down()分别是解锁和上锁··
  第2个函数是从spi_adapter结构的list链表中通过adap->name, name获取adapter结构。
请教是否正确呢··
truct spi_adapter *spi_get_adapter(const char *name)
{
        struct spi_adapter *adap = NULL;
        int try;

        for (try = 0; try < 2; try ++) {
                down(&adapter_lock);
                adap = __spi_get_adapter(name);
                if (adap && !try_inc_mod_count(adap->owner))
                        adap = NULL;
                up(&adapter_lock);

                if (adap)
                        break;
                if (try == 0)
                        request_module(n ame);
        }

        return adap;
}
这个函数有谁知道你干嘛用的吗?麻烦知道的回复下啊···

不…忘初心 2022-09-27 09:52:33

原帖由 angelawushuang 于 2008-7-30 17:03 发表
int spi_add_adapter(struct spi_adapter *adap)
{
        printk("SPI: adding adapter %s\n", adap->name);
        INIT_LIST_HEAD(&adap->clients);
        down(&adapter_lock);//什么意思
        init_MUTEX(&a ...

up() 和down()分别是信号量的PV操作,即增加信号量计数和减少信号量计数。

等风来 2022-09-27 09:52:33

看看ldd3就知道了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文