./arch/arm/mm/init.c 파일을 보다 보니 PageReserved(page) 와 같은 code 가 있어서
PageReserved() 함수를 찾고자 했는데 찾는데 아무리 grep 을 해도 찾을 수 없었다.
그런데 알고 보니 원래 아래와 같은 직관적인 define 이었는데,
#define PageReserved(page) test_bit(PG_reserved, &(page)->flags)
kernel 2.6.26 에서 (6a1e7f7 pageflags: convert to the use of new macros) 삭제하고,
아래와 같이 다른 define 으로 변경하였다.
PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved)
define 을 대입해서 풀어보니 아래와 같이 기존과 거의 같았다.
PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved)
---------------
TESTPAGEFLAG(Reserved, reserved) SETPAGEFLAG(Reserved, reserved) CLEARPAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved)
---------------
static inline int PageReserved(const struct page *page)
{ return test_bit(PG_reserved, &page->flags); }
static inline void SetPageReserved(struct page *page) \
{ set_bit(PG_reserved, &page->flags); }
static inline void ClearPageReserved(struct page *page) \
{ clear_bit(PG_reserved, &page->flags); }
static inline void __ClearPageReserved(struct page *page) \
{ __clear_bit(PG_reserved, &page->flags); }
'Linux Internal > mm' 카테고리의 다른 글
active mm & tlb flush at context_switch (0) | 2022.05.09 |
---|---|
mm: vmscan: shrink_zone (0) | 2017.07.22 |
dma: history (0) | 2017.07.09 |
staging: ion: history (0) | 2017.07.09 |