Re: Problem trying to implement mmap for device on 2.4

From: Richard B. Johnson
Date: Wed Oct 06 2004 - 12:28:43 EST


On Wed, 6 Oct 2004, Michael Baumann wrote:

Sorry if this is too much of a noob question - do point me to the right place
if you can.
System: PPC on VME
Attempting driver for 3rd party NVRAM board - it's meant to be used as
a data-store/system-state recorder. Will be used by more than one
processor in the system - each processor is to use a "chunk" of the RAM
as it's scratch space. Or that's the plan.

Based on what I thought I understood from Rubini&Corbet 2nd Edition
I created a simple module, that provided a mmap method - after reserving
the region via request_mem_region.

mapping was done with a simple remap_page_range()

In userland, the mmap system call is made, with MAP_FIXED
and the kernel immediately fails the call with "cannot allocate memory" -
never even getting to my implementation of the mmap call. Apparently
dying somewhere during "the good deal of work" Rubini talks about.
If I don't use MAP_FIXED, things 'work', but I need that fixed location,
I'm obviously trying to map the RAM into user space for access.


If you have implimented mmap() in your driver, you use MAP_FILE.
You receive a pointer to your data-space in your board.


I'm assuming I'm missing something simple in the setup, somewhere.
Any help/pointers/ even insults accepted - I'm in a tough spot here.


--
--

MAP_FIXED is for when you have some physical memory location you
need to access (like a screen buffer at 0x000b8000).

Cheers,
Dick Johnson
Penguin : Linux version 2.6.5-1.358-noreg on an i686 machine (5537.79 BogoMips).
Note 96.31% of all statistics are fiction.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/