DPDK  17.11.0
Data Structures | Macros | Typedefs | Functions
rte_memory.h File Reference
#include <stdint.h>
#include <stddef.h>
#include <stdio.h>
#include <rte_common.h>
+ Include dependency graph for rte_memory.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  rte_memseg
 

Macros

#define SOCKET_ID_ANY   -1
 
#define RTE_CACHE_LINE_MASK   (RTE_CACHE_LINE_SIZE-1)
 
#define RTE_CACHE_LINE_ROUNDUP(size)   (RTE_CACHE_LINE_SIZE * ((size + RTE_CACHE_LINE_SIZE - 1) / RTE_CACHE_LINE_SIZE))
 
#define RTE_CACHE_LINE_MIN_SIZE   64
 
#define __rte_cache_aligned   __rte_aligned(RTE_CACHE_LINE_SIZE)
 
#define __rte_cache_min_aligned   __rte_aligned(RTE_CACHE_LINE_MIN_SIZE)
 

Typedefs

typedef uint64_t phys_addr_t
 
typedef uint64_t rte_iova_t
 

Functions

int rte_mem_lock_page (const void *virt)
 
phys_addr_t rte_mem_virt2phy (const void *virt)
 
rte_iova_t rte_mem_virt2iova (const void *virt)
 
const struct rte_memsegrte_eal_get_physmem_layout (void)
 
void rte_dump_physmem_layout (FILE *f)
 
uint64_t rte_eal_get_physmem_size (void)
 
unsigned rte_memory_get_nchannel (void)
 
unsigned rte_memory_get_nrank (void)
 
int rte_eal_using_phys_addrs (void)
 

Detailed Description

Memory-related RTE API.

Definition in file rte_memory.h.

Macro Definition Documentation

◆ SOCKET_ID_ANY

#define SOCKET_ID_ANY   -1

◆ RTE_CACHE_LINE_MASK

#define RTE_CACHE_LINE_MASK   (RTE_CACHE_LINE_SIZE-1)

Cache line mask.

Definition at line 68 of file rte_memory.h.

◆ RTE_CACHE_LINE_ROUNDUP

#define RTE_CACHE_LINE_ROUNDUP (   size)    (RTE_CACHE_LINE_SIZE * ((size + RTE_CACHE_LINE_SIZE - 1) / RTE_CACHE_LINE_SIZE))

◆ RTE_CACHE_LINE_MIN_SIZE

#define RTE_CACHE_LINE_MIN_SIZE   64

Minimum Cache line size.

Definition at line 85 of file rte_memory.h.

◆ __rte_cache_aligned

struct rte_mempool_ops_table __rte_cache_aligned   __rte_aligned(RTE_CACHE_LINE_SIZE)

Force alignment to cache line.

Definition at line 90 of file rte_memory.h.

◆ __rte_cache_min_aligned

struct rte_eth_txq_info __rte_cache_min_aligned   __rte_aligned(RTE_CACHE_LINE_MIN_SIZE)

Force minimum cache line alignment.

Definition at line 95 of file rte_memory.h.

Typedef Documentation

◆ phys_addr_t

typedef uint64_t phys_addr_t

Physical address.

Definition at line 97 of file rte_memory.h.

◆ rte_iova_t

typedef uint64_t rte_iova_t

IO virtual address type. When the physical addressing mode (IOVA as PA) is in use, the translation from an IO virtual address (IOVA) to a physical address is a direct mapping, i.e. the same value. Otherwise, in virtual mode (IOVA as VA), an IOMMU may do the translation.

Definition at line 106 of file rte_memory.h.

Function Documentation

◆ rte_mem_lock_page()

int rte_mem_lock_page ( const void *  virt)

Lock page in physical memory and prevent from swapping.

Parameters
virtThe virtual address.
Returns
0 on success, negative on error.

◆ rte_mem_virt2phy()

phys_addr_t rte_mem_virt2phy ( const void *  virt)

Get physical address of any mapped virtual address in the current process. It is found by browsing the /proc/self/pagemap special file. The page must be locked.

Parameters
virtThe virtual address.
Returns
The physical address or RTE_BAD_IOVA on error.

◆ rte_mem_virt2iova()

rte_iova_t rte_mem_virt2iova ( const void *  virt)

Get IO virtual address of any mapped virtual address in the current process.

Parameters
virtThe virtual address.
Returns
The IO address or RTE_BAD_IOVA on error.

◆ rte_eal_get_physmem_layout()

const struct rte_memseg* rte_eal_get_physmem_layout ( void  )

Get the layout of the available physical memory.

It can be useful for an application to have the full physical memory layout to decide the size of a memory zone to reserve. This table is stored in rte_config (see rte_eal_get_configuration()).

Returns
  • On success, return a pointer to a read-only table of struct rte_physmem_desc elements, containing the layout of all addressable physical memory. The last element of the table contains a NULL address.
  • On error, return NULL. This should not happen since it is a fatal error that will probably cause the entire system to panic.

◆ rte_dump_physmem_layout()

void rte_dump_physmem_layout ( FILE *  f)

Dump the physical memory layout to a file.

Parameters
fA pointer to a file for output

◆ rte_eal_get_physmem_size()

uint64_t rte_eal_get_physmem_size ( void  )

Get the total amount of available physical memory.

Returns
The total amount of available physical memory in bytes.

◆ rte_memory_get_nchannel()

unsigned rte_memory_get_nchannel ( void  )

Get the number of memory channels.

Returns
The number of memory channels on the system. The value is 0 if unknown or not the same on all devices.

◆ rte_memory_get_nrank()

unsigned rte_memory_get_nrank ( void  )

Get the number of memory ranks.

Returns
The number of memory ranks on the system. The value is 0 if unknown or not the same on all devices.

◆ rte_eal_using_phys_addrs()

int rte_eal_using_phys_addrs ( void  )

Drivers based on uio will not load unless physical addresses are obtainable. It is only possible to get physical addresses when running as a privileged user.

Returns
1 if the system is able to obtain physical addresses. 0 if using DMA addresses through an IOMMU.