I have read about I/O ports recently from many recommended books for linux. Each of the book effectively taught me only two things
1. Reserving the I/O ports using request_region(...) function
2. Then access the I/O ports using inb, outb functions
Apart from repeated reading and googling I still have the following queries
Question 1:
The one thing that the books haven't sufficiently answered is 'how does linux know to which device it should write or read from when we use inb and outb functions'?
Say for example we are dealing with parallel port for instance. How does linux know that the parallel port is registered at 0x378 ?
Question 2:
Who registers the parallel port at 0x378 ?
I have read somewhere that all the mapped ports can be found in /proc/ioports.
Who generates this map. BIOS? or the Kernel?
Question 3:
How is /proc/ioports different from /proc/iomem(System Memory Map). Is there any overlap between them(because 0x378 is also an address, so it must be some where in the system map. right?) ?
Question 4:
Is 0x378 the physical address in the system memory map generated by BIOS as stated here
Or a logical address from above table remapped inside the RAM which is in turn mapped at 0x00100000 physical
I am banging my head with all of these bits and pieces of information without having a clue to stitch all of them together.
Please give me some pointers to understand them.
Thanks in advance.
Regards
Vineel Kumar Reddy Kovvuri
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies