On Sun, Mar 10, 2013 at 11:30 PM, Christoph Seitz <c.seitz@xxxxxxxx> wrote:
If you know the RAM physical address range you can figure out by doing the following
page_to_pfn(page_ptr) << 12;
where page_ptr is a struct page * returned by get_user_pages().
page_to_pfn() will return the pfn of the corresponding page frame and left shifting by 12 bits will give you page frame base address.
Hi all,
I have some problems allocation Memory the right way and use it in my
kernel module.
I use a char device for reading and writing from/to a pcie dma card.
Especially the read function makes me some headache. The user allocates
some memory with posix_memalign and call the read function on the
device, so that the devices knows where to write to. My driver now uses
get_user_pages() to pin the user pages. The memory has never been
written or read by the user, so it's not yet in the RAM, right? And
get_user_pages returns a valid number of pages, but for every page the
same struct. (respectively the same pointer). Is there any way to ensure
that the user pages are in the ram and get_user_pages returns a valid
page array?
If you know the RAM physical address range you can figure out by doing the following
page_to_pfn(page_ptr) << 12;
where page_ptr is a struct page * returned by get_user_pages().
page_to_pfn() will return the pfn of the corresponding page frame and left shifting by 12 bits will give you page frame base address.
Regards
Chris
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
--
Regards,
Prabhunath G
Linux Trainer
Bangalore
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies