public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* remap kernel static memory to user space
@ 2013-03-20 20:06 Eduardo Cruz
  2013-03-21 23:45 ` Eduardo Cruz
  2013-03-23 21:33 ` Hugh Dickins
  0 siblings, 2 replies; 6+ messages in thread
From: Eduardo Cruz @ 2013-03-20 20:06 UTC (permalink / raw)
  To: linux-kernel

Hello.

I'm trying to remap some kernel static memory to user space using
remap_pfn_range.
For that, I wrote a module that initializes a device, which later I
use mknod, etc.

When I allocate the memory with kmalloc, everything works:   (where
user_space_shared was allocated with kmalloc)

if ((ret = remap_pfn_range(vma, vma->vm_start,
virt_to_phys(user_space_shared) >> PAGE_SHIFT, length,
vma->vm_page_prot)) < 0)

In the application in user space:
kstc = mmap(0, sizeof(user_space_shared_t), PROT_READ|PROT_WRITE,
MAP_SHARED| MAP_LOCKED, fd, 0);

With user_space_shared allocated using kmalloc, it is working.
The application is able to read the data I wrote in the kernel module.

However, when I define and allocate that var in arch/ia64/mm/fault.c:

unsigned char user_space_shared[ sizeof(user_space_shared_t) +
PAGE_SIZE ] __attribute__((aligned(PAGE_SIZE)));
EXPORT_SYMBOL(user_space_shared);

And access that var from the module:

extern unsigned char user_space_shared[ sizeof(user_space_shared_t) +
PAGE_SIZE ];

There is no error message, but I can't read the contents i wrote
inside the kernel module from the application.

Your help would be appreciated.

ps:
I am taking care of page offsets/boundaries.
I'm using kernel 2.6.32 for ia64.


-- 
Eduardo Henrique Molina da Cruz
PhD student
Parallel and Distributed Processing Group
Federal University of Rio Grande do Sul (UFRGS)

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-03-23 23:13 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-20 20:06 remap kernel static memory to user space Eduardo Cruz
2013-03-21 23:45 ` Eduardo Cruz
2013-03-22  8:10   ` Clemens Ladisch
2013-03-23 20:25     ` Eduardo Cruz
2013-03-23 21:33 ` Hugh Dickins
2013-03-23 23:13   ` Eduardo Cruz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox