pgoff_t好像是从swp_entry_t里面提取出来的
但pgoff_t和swp_entry_t都是几乎等于unsigned long类型
难道是为了防止以后类型的实现发生变化?
用swp_entry_t做索引的理由是"zswap_duplicate_entry"
感觉直接用swp_entry_t做索引,重复概率会更低.
或者是因为swap_duplicate_entry的发生概率很低(zswap.c的注释说罕见重复),所以为了避免Bug风险(上述说的"类型实现"改变),仅使用pgoff_t作为索引?
mm_types.h:
代码: 全选
typedef struct {
unsigned long val;
} swp_entry_t;
代码: 全选
static inline swp_entry_t swp_entry(unsigned long type, pgoff_t offset)
{
swp_entry_t ret;
ret.val = (type << SWP_TYPE_SHIFT(ret)) |
(offset & SWP_OFFSET_MASK(ret));
return ret;
}