cache 的sys接口

cache 的sys接口在/sys/devices/system/cpu/cpu0/cache/ 如下图所示:


这里以index0 为例,可以看到图中的熟悉。具体的code在driver/base/cacheinfo.c 中

static const struct attribute_group cache_default_group = {
	.attrs = cache_default_attrs,
	.is_visible = cache_default_attrs_is_visible,
};
 static struct attribute *cache_default_attrs[] = {
    &dev_attr_id.attr,
    &dev_attr_type.attr,
    &dev_attr_level.attr,
    &dev_attr_shared_cpu_map.attr,
    &dev_attr_shared_cpu_list.attr,
    &dev_attr_coherency_line_size.attr,
    &dev_attr_ways_of_associativity.attr,
    &dev_attr_number_of_sets.attr,
    &dev_attr_size.attr,
    &dev_attr_allocation_policy.attr,
    &dev_attr_write_policy.attr,
    &dev_attr_physical_line_partition.attr,
    NULL
};

可以看到在看到在cache_default_attrs中定义的attrs在终端上没有显示,这是因为在定义cache_default_attrs的时候有一个成员函数is_visible 来决定那些attrs是否
可以被看到。 
static umode_t
cache_default_attrs_is_visible(struct kobject *kobj,
                   struct attribute *attr, int unused)
{
    struct device *dev = kobj_to_dev(kobj);
    struct cacheinfo *this_leaf = dev_get_drvdata(dev);
    const struct cpumask *mask = &this_leaf->shared_cpu_map;
    umode_t mode = attr->mode;
    #以id 为例这个if 条件在我的平台上不成立,因此这里返回0,所以就会在sys接口中看不到id
    if ((attr == &dev_attr_id.attr) && (this_leaf->attributes & CACHE_ID))
        return mode;
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值