From: Antonino A. D. <ad...@gm...> - 2005-10-14 13:04:25
|
Yan Seiner wrote: > >> Vfb behaves like a real frame buffer device, except that you cannot >> mmap() it >> to userspace (resulting behavior is undefined). But that should be >> fixable by >> letting vfb provide its own fb_mmap() routine, if anyone cares to >> implement. >> >> Gr{oetje,eeting}s, >> >> Geert >> >> > Well, that explains why vncserver won't work right. It gives me hope > that everything else I've done works. > > OK, I've had a look at the various kernel source xxfb_mmap functions... > If I were to try and write one for the vfb, where do I find some docs or > info on where to start? > > And/or what's the closest one I can copy from driver/video? Is there > one that is simple and well documented which explains what xxfb_mmap is > supposed to do and how? > You can start by changing vfb to use __get_free_pages() to allocate the videomemory instead of vmalloc. Then just copy the fb_mmap() function in drivers/video/fbmem.c to vfb.c as vfb_mmap and then mark vm->vm_flags as VM_RESERVED also. Then make sure that you point fb_mmap in vfb_ops to your vfb_mmap() function. If you're using linux-2.6, you also have to add this before register_framebuffer(): info->fix.smem_len = videomemorysize; info->fix.smem_start = virt_to_phys(videomemory) & PAGE_MASK; Tony |