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の倍数値にします。