The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"vmalloc (ядра 2.4 и 2.6)"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Портирование)
Изначальное сообщение [ Отслеживать ]

"vmalloc (ядра 2.4 и 2.6)"  +/
Сообщение от igor__ on 30-Май-12, 11:20 
Добрый день.
Нужен совет по направлению "раскопок" для портирования драйвера ядра 2.6 на 2.4
В драйверах для ядра 2.6 встречаю два варианта варианта работы с виртуальной памятью:
1. vmalloc_32(), vmalloc_to_page(), vm_insert_page() - например UVC
2. vmalloc_32(), vmalloc_to_page() - например SPCA5xx

Отсюда собственно вопросы:
1. какую задачу решает vm_insert_page(), почему spca спокойно обходится без него ?
2. есть ли аналог vm_insert_page() для ядра 2.4 ?

В LDD2 и LDD3 этот метод не рассмартривается.
Заранее спасибо.


Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "vmalloc (ядра 2.4 и 2.6)"  +/
Сообщение от pavlinux (ok) on 30-Май-12, 18:08 
> ... для портирования драйвера ядра 2.6 на 2.4

Нахуа? :)

> В драйверах для ядра 2.6 встречаю два варианта варианта работы с виртуальной
> памятью:
> 1. vmalloc_32(), vmalloc_to_page(), vm_insert_page() - например UVC
> 2. vmalloc_32(), vmalloc_to_page() - например SPCA5xx


#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)

    kva = (unsigned long) page_address(vmalloc_to_page((void *) adr));
    kva |= adr & (PAGE_SIZE - 1);

#else

    va = VMALLOC_VMADDR(adr);
    kva = uvirt_to_kva(pgd_offset_k(va), va);

http://mxhaard.free.fr/spca50x/Download/oldrelease/spca5xx-2...

> Отсюда собственно вопросы:
> 1. какую задачу решает vm_insert_page(), почему spca спокойно обходится без него ?

This allows drivers to insert individual pages they've allocated into a user vma.

The page has to be a nice clean _individual_ kernel allocation. If you allocate
a compound page, you need to have marked it as such (__GFP_COMP), or manually
just split the page up yourself (see split_page).

The page does not need to be reserved.

> 2. есть ли аналог vm_insert_page() для ядра 2.4 ?

remap_page_range()

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру