慢慢欣赏linux pud_index和pud_page解析

#define pud_index(addr)		(((addr) >> PUD_SHIFT) & (PTRS_PER_PUD - 1))
	=>#define PUD_SHIFT		ARM64_HW_PGTABLE_LEVEL_SHIFT(1)
		=>#define ARM64_HW_PGTABLE_LEVEL_SHIFT(n)	((PAGE_SHIFT - 3) * (4 - (n)) + 3)
			=> 29
	=>#define PTRS_PER_PUD		PTRS_PER_PTE
		=>#define PTRS_PER_PTE		(1 << (PAGE_SHIFT - 3))
			=> 1 << 9
typedef struct { pudval_t pud; } pud_t;

#define pud_page(pud)		pfn_to_page(__phys_to_pfn(__pud_to_phys(pud)))
	=>#define __pud_to_phys(pud)	__pte_to_phys(pud_pte(pud))
		=>static inline pte_t pud_pte(pud_t pud)
		{
			return __pte(pud_val(pud));
		}
		=>#define __pte_to_phys(pte)	(pte_val(pte) & PTE_ADDR_MASK)
			=>#define PTE_ADDR_MASK		PTE_ADDR_LOW
				=>#define PTE_ADDR_LOW		(((_AT(pteval_t, 1) << (48 - PAGE_SHIFT)) - 1) << PAGE_SHIFT)
					=> ((1 << 36) - 1) << 12
	=>#define	__phys_to_pfn(paddr)	PHYS_PFN(paddr)
		=>#define PHYS_PFN(x)	((unsigned long)((x) >> PAGE_SHIFT))
	=>#define pfn_to_page __pfn_to_page
		=>#define __pfn_to_page(pfn)	(vmemmap + (pfn))
			=>#define vmemmap			((struct page *)VMEMMAP_START - (memstart_addr >> PAGE_SHIFT))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值