달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

./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
Posted by neodelicious
|