Это пользовательский поток, выполняющийся в режиме ядра.
Возвращаемое значение get_user_pages_fast
больше 0
. (Меньше 10)
Но система перестала работать, когда я вызываю put_page()
или printполе структуры страницы.(последние две строки кода)
struct pinned_page{
struct page *pages[10];
int num;
};
struct pinned_page *pp = (struct pinned_page*)kzalloc(5*sizeof(struct pinned_page),GFP_KERNEL);
r = get_user_pages_fast(addr, n_page, 0, pp[0].pages);
printk(KERN_DEBUG "get_user_page_back=%d\n",r);
printk(KERN_DEBUG "page_flags:%u ",pp[0].pages[0]->flags);
put_page(pp[0].pages[0]);
Будет полезно, если вы дадите мне несколько советов.