Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: А что мэпится? траблы с mmap.  (Прочитано 4468 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Anonymous
Гость
« : 23-04-2004 10:10 » 

cat /proc/1334/maps
...
4014a000-40163000 rw-p 003e0000 03:02 201881     /dev/forev0
...

все верно, но попытки записи по 4014a000 в приложении не приводят к изменению данных на странице
 (у меня отдельный IOCTL, который печатает весь dma буфер)

   
   при загрузке
   dma = kmalloc(10*0x1000, GFP_KERNEL | GFP_ATOMIC);

mmap()
{
   unsigned long   offset;
   offset = vma->vm_pgoff << PAGE_OFFSET;   // в vma->vm_pgoff передается _pa(dma), полученный через IOCTL (тут все верно наверняка)
   vma->vm_flags |= VM_RESERVED;
   if (remap_page_range(vma, vma->vm_start, offset, vma->vm_end-vma->vm_start,vma->vm_page_prot))
      return -EAGAIN;
   return 0;
}

вызов mmap в приложениее

char * mapdev(int fd , int offset, int size)
{
   char *addr;
   addr = mmap (NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset);
   if (addr == MAP_FAILED)
      return addr;
   return (addr);
}
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines