list_lru
长什么样
struct list_lru
+-----------------------------+
|node | 这其实是一个数组,__list_lru_init中用kzalloc_objs()分配
| (struct list_lru_node*) |
| +-------------------------+
| |nr_items | 这个比较tricky,如果是memcg上的,也会算到这里
| | (atomic_long_t) | 所以这是整个node上,链表中个数
| |lru |
| | (struct list_lru_one)|
| | +--------------------+
| | |list |
| | | (struct list_head)|
| | |nr_items | list中成员的个数
| | | (long) |
| | |lock | 保护lru的锁
| | | (spinlock_t) |
+---+----+--------------------+
|list | 这部分只有CONFIG_MEMCG时才有
| (struct list_head) |
|shrinker_id |
| (int) |
|memcg_aware |
| (bool) |
|xa |---->struct list_lru_memcg
| (struct xarray) | +------------------------------+
+-----------------------------+ |node[] |
| (struct list_lru_one) |
| +-------------------------+
| |list |
| | (struct list_head) |
| |nr_items |
| | (long) |
| |lock |
| | (spinlock_t) |
+----+-------------------------+使用方法
初始化
添加/删除
遍历
Last updated