LINUX.ORG.RU

[kernel] Работа с страницами памяти.

 


0

1

Доброе утро!!!
Вопрос такой, если я в ядре получаю страницу памяти вот так
void *this_page = NULL;
this_page = alloc_page(__GFP_HIGHMEM | __GFP_ZERO);
То как мне считывать и записывать данные в эту страницу (в ядре)? а также как определить размер страницы в системе. Понимаю конечно что в основном она равна 4096 однако, вдруг её можно определять динамически.
А также, освобождение страницы производить функцией __free_page ?

Deleted

Ответ на: комментарий от ttnl

Тоесть?
Сначала делаю
this_page = alloc_page(__GFP_HIGHMEM | __GFP_ZERO);
затем
kmap(this_page);
Тоесть получили линейный адрес?
shizing - эт что такое? для чего?

kunmap применяем к линейнуму адресу полученному через kmap?
Теперь __free_page(this_page);
Да?
shizing - эт что такое? для чего?

Deleted
()
Ответ на: комментарий от Deleted

>Да?

Да

shizing - эт что такое? для чего?

Это тебе лучше знать

ttnl ★★★★★
()
Ответ на: комментарий от Deleted

> Да?

да, но ведь ты уже спрашивал, и Murr (iirc) тебе отвечал ;)

если без HIGHMEM то достаточно page_address().

и это... __GFP_HIGHMEM | __GFP_ZERO не очень хорошо. тогда
уж GFP_HIGHUSER | __GFP_ZERO чтобы добавить GFP_WAIT/etc.
вряд ли ты действительно хочешь atomic allocation.

кроме того. в зависимости от того, зачем ты пишешь в эту
страницу, тебе, возможно нужно flush_kernel_dcache_page()
или что-то вроде перед kunmap(). впрочем, на x86 это не
важно.

idle ★★★★★
()
Ответ на: комментарий от idle

Возможно отвечал..странно почему я это не запомнил. (

Мне нужно именно атомарное выделение памяти, потому и __GFP_HIGHMEM | __GFP_ZERO
Но спасибо за подсказку про GFP_WAIT я чтото на это не обращал раньше внимания.

Что делает flush_kernel_dcache_page ? для чего применяется? а также в чём смысл функции kunmap ?

Deleted
()
Ответ на: комментарий от Deleted

> Что делает flush_kernel_dcache_page ?

забудь. на x86 это в любом случае nop. можешь почитать
Documentation/cachetlb.txt

еще раз, я не знаю что ты на самом деле делаешь, я просто
для примера упомянул.

в чём смысл функции kunmap ?


кхм. парная скобка для kmap(). освобождение ресурсов.

idle ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.