DPDK
19.02.0
Main Page
Related Pages
Data Structures
Files
Examples
File List
Globals
lib
librte_distributor
rte_distributor.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright(c) 2017 Intel Corporation
3
*/
4
5
#ifndef _RTE_DISTRIBUTOR_H_
6
#define _RTE_DISTRIBUTOR_H_
7
16
#ifdef __cplusplus
17
extern
"C"
{
18
#endif
19
20
/* Type of distribution (burst/single) */
21
enum
rte_distributor_alg_type {
22
RTE_DIST_ALG_BURST = 0,
23
RTE_DIST_ALG_SINGLE,
24
RTE_DIST_NUM_ALG_TYPES
25
};
26
27
struct
rte_distributor;
28
struct
rte_mbuf
;
29
50
struct
rte_distributor *
51
rte_distributor_create
(
const
char
*name,
unsigned
int
socket_id,
52
unsigned
int
num_workers,
53
unsigned
int
alg_type);
54
55
/* *** APIS to be called on the distributor lcore *** */
56
/*
57
* The following APIs are the public APIs which are designed for use on a
58
* single lcore which acts as the distributor lcore for a given distributor
59
* instance. These functions cannot be called on multiple cores simultaneously
60
* without using locking to protect access to the internals of the distributor.
61
*
62
* NOTE: a given lcore cannot act as both a distributor lcore and a worker lcore
63
* for the same distributor instance, otherwise deadlock will result.
64
*/
65
87
int
88
rte_distributor_process
(
struct
rte_distributor *d,
89
struct
rte_mbuf
**mbufs,
unsigned
int
num_mbufs);
90
105
int
106
rte_distributor_returned_pkts
(
struct
rte_distributor *d,
107
struct
rte_mbuf
**mbufs,
unsigned
int
max_mbufs);
108
120
int
121
rte_distributor_flush
(
struct
rte_distributor *d);
122
132
void
133
rte_distributor_clear_returns
(
struct
rte_distributor *d);
134
135
/* *** APIS to be called on the worker lcores *** */
136
/*
137
* The following APIs are the public APIs which are designed for use on
138
* multiple lcores which act as workers for a distributor. Each lcore should use
139
* a unique worker id when requesting packets.
140
*
141
* NOTE: a given lcore cannot act as both a distributor lcore and a worker lcore
142
* for the same distributor instance, otherwise deadlock will result.
143
*/
144
165
int
166
rte_distributor_get_pkt
(
struct
rte_distributor *d,
167
unsigned
int
worker_id,
struct
rte_mbuf
**pkts,
168
struct
rte_mbuf
**oldpkt,
unsigned
int
retcount);
169
184
int
185
rte_distributor_return_pkt
(
struct
rte_distributor *d,
186
unsigned
int
worker_id,
struct
rte_mbuf
**oldpkt,
int
num);
187
210
void
211
rte_distributor_request_pkt
(
struct
rte_distributor *d,
212
unsigned
int
worker_id,
struct
rte_mbuf
**oldpkt,
213
unsigned
int
count);
214
233
int
234
rte_distributor_poll_pkt
(
struct
rte_distributor *d,
235
unsigned
int
worker_id,
struct
rte_mbuf
**mbufs);
236
237
#ifdef __cplusplus
238
}
239
#endif
240
241
#endif
Generated by
1.8.1.2