ipmi创建的proc接口

在通过调用ipmi_register_smi来注册ipmi_smi_handlers *handlers时,会通过
    if (rv == 0)
        rv = add_proc_entries(intf, i);
来建立一个proc entry
static int add_proc_entries(ipmi_smi_t smi, int num)
{
    int rv = 0;

#ifdef CONFIG_PROC_FS
    sprintf(smi->proc_dir_name, "%d", num);
    smi->proc_dir = proc_mkdir(smi->proc_dir_name, proc_ipmi_root);
    if (!smi->proc_dir)
        rv = -ENOMEM;

    if (rv == 0)
        rv = ipmi_smi_add_proc_entry(smi, "stats",
                         &smi_stats_proc_ops,
                         smi);

    if (rv == 0)
        rv = ipmi_smi_add_proc_entry(smi, "ipmb",
                         &smi_ipmb_proc_ops,
                         smi);

    if (rv == 0)
        rv = ipmi_smi_add_proc_entry(smi, "version",
                         &smi_version_proc_ops,
                         smi);
#endif /* CONFIG_PROC_FS */

    return rv;
}
这里的num是在ipmi_register_smi 中赋值的,在add_proc_entries 中的num就是这里的i
    /* Look for a hole in the numbers. */
    i = 0;
    link = &ipmi_interfaces;
    list_for_each_entry_rcu(tintf, &ipmi_interfaces, link) {
        if (tintf->intf_num != i) {
            link = &tintf->link;
            break;
        }
        i++;
    }
可以看到是从0开始的,每个ipmi_interfaces 对应一个number,这个ipmi_interfaces的添加同样是在ipmi_register_smi中
    /* Add the new interface in numeric order. */
    if (i == 0)
        list_add_rcu(&intf->link, &ipmi_interfaces);
    else
        list_add_tail_rcu(&intf->link, link);
回到add_proc_entries,通过proc_mkdir 创建proc目录,名字就是0/1/2等会创建三个目录stats/ipmb/version
回到try_smi_init中,除了stats/ipmb/version这个外,还添加了type/si_stats/params 这三个目录



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值