| 검색 | ?

Difference between r1.40 and the current

@@ -29,7 +29,7 @@
* GCC (version 5.0+) or Clang (version 3.6+)
* pkg-config or pkgconf
* Python 3.6+
* Meson (version 0.53.2+)
* Meson (version 0.57+)
* pyelftools (version 0.22+)
* libnuma library

@@ -56,7 +56,7 @@
[^https://doc.dpdk.org/guides/linux_gsg/sys_reqs.html#running-dpdk-applications Running DPDK Applications] 를 참고하실 수 있습니다.

기본 실행 환경에 필요한 요구사항
* Kernel version >= 4.14
* Kernel version >= 4.19
* HUGETLBFS
* PROC_PAGE_MONITOR support
* HPET and HPET_MMAP
@@ -128,6 +128,18 @@
* 기본 자료형 및 주요 함수
{{{#!plain
/* "lib/eal/include/rte_memzone.h" */
 
#define RTE_MEMZONE_2MB 0x00000001 /**< Use 2MB pages. */
#define RTE_MEMZONE_1GB 0x00000002 /**< Use 1GB pages. */
#define RTE_MEMZONE_16MB 0x00000100 /**< Use 16MB pages. */
#define RTE_MEMZONE_16GB 0x00000200 /**< Use 16GB pages. */
#define RTE_MEMZONE_256KB 0x00010000 /**< Use 256KB pages. */
#define RTE_MEMZONE_256MB 0x00020000 /**< Use 256MB pages. */
#define RTE_MEMZONE_512MB 0x00040000 /**< Use 512MB pages. */
#define RTE_MEMZONE_4GB 0x00080000 /**< Use 4GB pages. */
#define RTE_MEMZONE_SIZE_HINT_ONLY 0x00000004 /**< Use available page size */
#define RTE_MEMZONE_IOVA_CONTIG 0x00100000 /**< Ask for IOVA-contiguous memzone. */
struct rte_memzone {
#define RTE_MEMZONE_NAMESIZE 32 /**< Maximum length of memory zone name.*/
char name[RTE_MEMZONE_NAMESIZE]; /**< Name of the memory zone. */
@@ -244,6 +256,107 @@
void rte_mempool_walk(void (*func)(struct rte_mempool *, void *arg), void *arg);
}}}
=== ring ===
* 기본 자료형 및 주요 함수
{{{#!plain
/* "lib/ring/rte_ring_core.h" */
enum rte_ring_queue_behavior {
RTE_RING_QUEUE_FIXED = 0,
RTE_RING_QUEUE_VARIABLE
};
#define RTE_RING_MZ_PREFIX "RG_"
#define RTE_RING_NAMESIZE (RTE_MEMZONE_NAMESIZE - sizeof(RTE_RING_MZ_PREFIX) + 1)
 
enum rte_ring_sync_type {
RTE_RING_SYNC_MT, /**< multi-thread safe (default mode) */
RTE_RING_SYNC_ST, /**< single thread only */
RTE_RING_SYNC_MT_RTS, /**< multi-thread relaxed tail sync */
RTE_RING_SYNC_MT_HTS, /**< multi-thread head/tail sync */
};
 
...
 
struct rte_ring {
alignas(RTE_CACHE_LINE_SIZE) char name[RTE_RING_NAMESIZE];
int flags; /**< Flags supplied at creation. */
const struct rte_memzone *memzone; /**< Memzone, if any, containing the rte_ring */
uint32_t size; /**< Size of ring. */
uint32_t mask; /**< Mask (size-1) of ring. */
uint32_t capacity; /**< Usable size of ring */
RTE_CACHE_GUARD;
/** Ring producer status. */
union __rte_cache_aligned {
struct rte_ring_headtail prod;
struct rte_ring_hts_headtail hts_prod;
struct rte_ring_rts_headtail rts_prod;
};
RTE_CACHE_GUARD;
/** Ring consumer status. */
union __rte_cache_aligned {
struct rte_ring_headtail cons;
struct rte_ring_hts_headtail hts_cons;
struct rte_ring_rts_headtail rts_cons;
};
RTE_CACHE_GUARD;
};
 
#define RING_F_SP_ENQ 0x0001 /**< The default enqueue is "single-producer". */
#define RING_F_SC_DEQ 0x0002 /**< The default dequeue is "single-consumer". */
 
#define RING_F_EXACT_SZ 0x0004
#define RTE_RING_SZ_MASK (0x7fffffffU) /**< Ring size mask */
 
#define RING_F_MP_RTS_ENQ 0x0008 /**< The default enqueue is "MP RTS". */
#define RING_F_MC_RTS_DEQ 0x0010 /**< The default dequeue is "MC RTS". */
 
#define RING_F_MP_HTS_ENQ 0x0020 /**< The default enqueue is "MP HTS". */
#define RING_F_MC_HTS_DEQ 0x0040 /**< The default dequeue is "MC HTS". */
 
/* "lib/ring/rte_ring.h" */
 
ssize_t rte_ring_get_memsize(unsigned int count);
 
int rte_ring_init(struct rte_ring *r, const char *name, unsigned int count, unsigned int flags);
struct rte_ring *rte_ring_create(const char *name, unsigned int count, int socket_id, unsigned int flags);
void rte_ring_free(struct rte_ring *r);
 
void rte_ring_dump(FILE *f, const struct rte_ring *r);
 
static __rte_always_inline unsigned int rte_ring_mp_enqueue_bulk(struct rte_ring *r, void * const *obj_table, unsigned int n, unsigned int *free_space)
static __rte_always_inline unsigned int rte_ring_sp_enqueue_bulk(struct rte_ring *r, void * const *obj_table, unsigned int n, unsigned int *free_space)
static __rte_always_inline unsigned int rte_ring_enqueue_bulk(struct rte_ring *r, void * const *obj_table, unsigned int n, unsigned int *free_space)
static __rte_always_inline int rte_ring_mp_enqueue(struct rte_ring *r, void *obj)
static __rte_always_inline int rte_ring_sp_enqueue(struct rte_ring *r, void *obj)
static __rte_always_inline unsigned int rte_ring_mc_dequeue_bulk(struct rte_ring *r, void **obj_table, unsigned int n, unsigned int *available)
static __rte_always_inline unsigned int rte_ring_sc_dequeue_bulk(struct rte_ring *r, void **obj_table, unsigned int n, unsigned int *available)
static __rte_always_inline unsigned int rte_ring_dequeue_bulk(struct rte_ring *r, void **obj_table, unsigned int n, unsigned int *available)
static __rte_always_inline int rte_ring_mc_dequeue(struct rte_ring *r, void **obj_p)
static __rte_always_inline int rte_ring_sc_dequeue(struct rte_ring *r, void **obj_p)
static __rte_always_inline int rte_ring_dequeue(struct rte_ring *r, void **obj_p)
 
void rte_ring_reset(struct rte_ring *r);
 
static inline unsigned int rte_ring_count(const struct rte_ring *r)
static inline unsigned int rte_ring_free_count(const struct rte_ring *r)
static inline int rte_ring_full(const struct rte_ring *r)
static inline int rte_ring_empty(const struct rte_ring *r)
static inline unsigned int rte_ring_get_size(const struct rte_ring *r)
static inline unsigned int rte_ring_get_capacity(const struct rte_ring *r)
static inline enum rte_ring_sync_type rte_ring_get_prod_sync_type(const struct rte_ring *r)
static inline int rte_ring_is_prod_single(const struct rte_ring *r)
static inline enum rte_ring_sync_type rte_ring_get_cons_sync_type(const struct rte_ring *r)
static inline int rte_ring_is_cons_single(const struct rte_ring *r)
 
void rte_ring_list_dump(FILE *f);
 
struct rte_ring *rte_ring_lookup(const char *name);
 
static __rte_always_inline unsigned int rte_ring_mp_enqueue_burst(struct rte_ring *r, void * const *obj_table, unsigned int n, unsigned int *free_space)
static __rte_always_inline unsigned int rte_ring_sp_enqueue_burst(struct rte_ring *r, void * const *obj_table, unsigned int n, unsigned int *free_space)
static __rte_always_inline unsigned int rte_ring_enqueue_burst(struct rte_ring *r, void * const *obj_table, unsigned int n, unsigned int *free_space)
static __rte_always_inline unsigned int rte_ring_mc_dequeue_burst(struct rte_ring *r, void **obj_table, unsigned int n, unsigned int *available)
static __rte_always_inline unsigned int rte_ring_sc_dequeue_burst(struct rte_ring *r, void **obj_table, unsigned int n, unsigned int *available)
static __rte_always_inline unsigned int rte_ring_dequeue_burst(struct rte_ring *r, void **obj_table, unsigned int n, unsigned int *available)
}}}
=== mbuf ===
=== RCU(Read-Copy-Update) ===
=== hash ===
@@ -308,5 +421,4 @@

|DPDK PMD for AF_XDP| 참고 영상 ||
|| [[Play(https://youtu.be/gZdeTmcazjE)]] ||




File does not exist


Copyright ⓒ MINZKN.COM
All Rights Reserved.