読者です 読者をやめる 読者になる 読者になる

slubで/sys/kernel/slab/<slab name>/以下にstruct kmem_cacheの変数をexportさせるメモ

linux kernel

slubでstruct kmem_cacheの各変数の値を見るのに/sys/kernel/slab//にexportさせる場合のメモ。俺得用。

見るだけなら 変数名 + _show という形で関数を作って、SLAB_ATTR_ROマクロに見たい変数名を渡す。それとslab_attrsに 変数名 + _attr.attr という形で値をセット。

diff --git a/mm/slub.c b/mm/slub.c
index 70567bf..ea5c550 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -4338,6 +4338,12 @@ static ssize_t objs_per_slab_show(struct kmem_cache *s, char *buf)
 }
 SLAB_ATTR_RO(objs_per_slab);

+static ssize_t offset_show(struct kmem_cache *s, char *buf)
+{
+       return sprintf(buf, "%d\n", s->offset);
+}
+SLAB_ATTR_RO(offset);
+
 static ssize_t order_store(struct kmem_cache *s,
                                const char *buf, size_t length)
 {
@@ -4881,7 +4887,7 @@ static struct attribute *slab_attrs[] = {
 #ifdef CONFIG_FAILSLAB
        &failslab_attr.attr,
 #endif
-
+       &offset_attr.attr,
        NULL
 };

書き込みもしたい場合はshowの他にstoreの関数も追加。offset_storeみたいに。