mmu.h #define PGROUNDUP(sz) (((sz)+PGSIZE-1) & ~(PGSIZE-1))

トップページ
jupiteroak.hatenablog.com


mmu.h
https://github.com/mit-pdos/xv6-public/blob/master/mmu.h#L90

#define PGROUNDUP(sz)  (((sz)+PGSIZE-1) & ~(PGSIZE-1))

PGROUNDUPマクロは、szで指定されたアドレス値(16進数)の下3桁を切り上げます(アドレス値を4KBの倍数値に切り上げます)。

#define PGSIZE          4096 
#define PGROUNDUP(sz)  (((sz)+PGSIZE-1) & ~(PGSIZE-1))

#define PGROUNDUP(sz)  (((sz)+4095) & ~(4095))

#define PGROUNDUP(sz)  (((sz)+4095) & ~(0x0000 0FFF))

#define PGROUNDUP(sz)  (((sz)+4095) & 0xFFFF F000)

szで指定されたアドレス値に4095を足すことにより、szで指定されたアドレス(16進数)の下3桁の値(0x001から0xFFFまでのいずれかの値をとる)を繰り上げます。繰り上げられたアドレス値を~(PGSIZE-1)でマスク処理することにより、アドレス値を4KBの倍数値にします。