Linux 커널 함수 "lookup_page_ext"가 NULL을 반환합니다.

Linux 커널 함수 "lookup_page_ext"가 NULL을 반환합니다.

저는 Linux 커널 프로그래밍을 처음 접했습니다. 저는 Linux kernel-6.0용 커널 모듈을 작성 중입니다.

아래 코드는 다음과 같습니다.

static int count_wired_pages(unsigned long start_pfn, unsigned long end_pfn)
{
    unsigned long pfn;
    int nr_pages=0, page_mt, count = 0;
    struct page *page;
    struct page_ext *page_ext;
    struct page_owner *page_owner;

    for (pfn = start_pfn; pfn < end_pfn; pfn++) {
        if (!pfn_valid(pfn))
            continue;
        /*some code*/

        page = pfn_to_page(pfn);
        page_ext = lookup_page_ext(page);
        if (unlikely(!page_ext))
            continue;

        if (!test_bit(PAGE_EXT_OWNER_ALLOCATED, &page_ext->flags))
            continue;

        page_owner = get_page_owner(page_ext);
        page_mt = gfp_migratetype(page_owner->gfp_mask);
        nr_pages = (1UL << page_owner->order);
        
        /*some code*/

}

위 코드에서는 함수를 호출하고 있습니다 lookup_page_ext(). 커널 .config파일에서 나는 활성화 CONFIG_PAGE_EXTENSION하고 CONFIG_PAGE_OWNER. 또한 내 모듈에 표시되도록 EXPORT_SYMBOL함수를 추가했습니다.lookup_page_ext()

이 모든 것에도 불구하고 함수는 를 반환합니다 NULL. 내가 놓친 것이 있나요?

관련 정보