mem: get physical address of any pointer
authorThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 20 Mar 2014 14:05:16 +0000 (15:05 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 20 Mar 2014 14:35:08 +0000 (15:35 +0100)
commit3097de6e6bfb955758dc9995d64b73daea4fc411
tree3575b14355934ade7e9ff2483b0915f2f92c9876
parent53a9ca3c570311a8e729cf86ea5a3da0a2520e8e
mem: get physical address of any pointer

Insert get_physaddr() into public API as rte_mem_virt2phy().

rte_mem_virt2phy() permits to obtain the physical address of any
virtual address mapped to the current process.
get_physaddr() was working only for addresses pointing exactly to
the first byte of a page.
Note that this function is very slow and shouldn't be called
after initialization to avoid a performance bottleneck.

The memory must be locked with mlock(). The function rte_mem_lock_page()
is a mlock() helper that lock the whole page.

A better name would be rte_mem_virt2phys but rte_mem_virt2phy is more
consistent with rte_mempool_virt2phy.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
lib/librte_eal/common/include/rte_memory.h
lib/librte_eal/linuxapp/eal/eal_memory.c