Clarification on memory mapping

Dave Hylands dhylands at gmail.com
Wed Jun 1 19:47:06 EDT 2011


Hi Prasant,

On Wed, Jun 1, 2011 at 10:38 AM, Prashant Shah <pshah.mumbai at gmail.com> wrote:
> Hi,
>
> On Wed, Jun 1, 2011 at 12:04 PM, sandeep kumar
> <coolsandyforyou at gmail.com> wrote:
>> Hi,
>>
>> ioremap() :
>> 2) ioremap does mapping of a particular i/o device to kernel logical memory
>> address.
> Please correct me if I am wrong.
>
> I think this function will remap the I/O registers location to a
> memory location, so instead of using inb/outb you can use the memory
> based functions like readb/writeb.
>
> eg : lets say I want to read from I/O port 0x80. I will have to use
> the inb() function. Now if I ioremap() it to a memory location it I
> can use the readb() instead.

I'm pretty sure thats not the case (I'm not that familiar with the x86
I/O space on modern processors). I think that if you need to use
in/out instructions then you need to do that and there is no way of
mapping this into memory space.

ioremap is primarily used with memory-mapped peripherals (very common
on most non-x86 architectures). If basically maps a chunk of physical
memory into a virtual space.

If that physical memory happens to conincide with device registers,
then that will allow the driver to manipulate those registers.

-- 
Dave Hylands
Shuswap, BC, Canada
http://www.davehylands.com



More information about the Kernelnewbies mailing list