DPDK
18.05.1
Main Page
Related Pages
Data Structures
Files
Examples
File List
Globals
lib
librte_eal
common
include
rte_bus.h
Go to the documentation of this file.
1
/*-
2
* BSD LICENSE
3
*
4
* Copyright 2016 NXP
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
8
* are met:
9
*
10
* * Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* * Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in
14
* the documentation and/or other materials provided with the
15
* distribution.
16
* * Neither the name of NXP nor the names of its
17
* contributors may be used to endorse or promote products derived
18
* from this software without specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
*/
32
33
#ifndef _RTE_BUS_H_
34
#define _RTE_BUS_H_
35
45
#ifdef __cplusplus
46
extern
"C"
{
47
#endif
48
49
#include <stdio.h>
50
#include <sys/queue.h>
51
52
#include <
rte_log.h
>
53
#include <
rte_dev.h
>
54
56
TAILQ_HEAD
(rte_bus_list,
rte_bus
);
57
58
67
enum
rte_iova_mode
{
68
RTE_IOVA_DC = 0,
/* Don't care mode */
69
RTE_IOVA_PA = (1 << 0),
/* DMA using physical address */
70
RTE_IOVA_VA = (1 << 1)
/* DMA using virtual address */
71
};
72
84
typedef
int (*
rte_bus_scan_t
)(void);
85
96
typedef
int (*
rte_bus_probe_t
)(void);
97
120
typedef
struct
rte_device
*
121
(*rte_bus_find_device_t)(
const
struct
rte_device
*start,
rte_dev_cmp_t
cmp,
122
const
void
*data);
123
135
typedef
int (*
rte_bus_plug_t
)(
struct
rte_device
*dev);
136
148
typedef
int (*
rte_bus_unplug_t
)(
struct
rte_device
*dev);
149
168
typedef
int (*
rte_bus_parse_t
)(
const
char
*
name
,
void
*addr);
169
173
enum
rte_bus_scan_mode
{
174
RTE_BUS_SCAN_UNDEFINED,
175
RTE_BUS_SCAN_WHITELIST,
176
RTE_BUS_SCAN_BLACKLIST,
177
};
178
182
struct
rte_bus_conf
{
183
enum
rte_bus_scan_mode
scan_mode
;
184
};
185
186
197
typedef
enum
rte_iova_mode
(*
rte_bus_get_iommu_class_t
)(void);
198
199
203
struct
rte_bus
{
204
TAILQ_ENTRY
(
rte_bus
) next;
205
const
char
*
name
;
206
rte_bus_scan_t
scan
;
207
rte_bus_probe_t
probe
;
208
rte_bus_find_device_t
find_device
;
209
rte_bus_plug_t
plug
;
210
rte_bus_unplug_t
unplug
;
211
rte_bus_parse_t
parse
;
212
struct
rte_bus_conf
conf
;
213
rte_bus_get_iommu_class_t
get_iommu_class
;
214
};
215
223
void
rte_bus_register
(
struct
rte_bus
*bus);
224
232
void
rte_bus_unregister
(
struct
rte_bus
*bus);
233
241
int
rte_bus_scan
(
void
);
242
251
int
rte_bus_probe
(
void
);
252
259
void
rte_bus_dump
(FILE *f);
260
276
typedef
int (*
rte_bus_cmp_t
)(
const
struct
rte_bus
*bus,
const
void
*data);
277
300
struct
rte_bus
*
rte_bus_find
(
const
struct
rte_bus
*start,
rte_bus_cmp_t
cmp,
301
const
void
*data);
302
306
struct
rte_bus
*
rte_bus_find_by_device
(
const
struct
rte_device
*dev);
307
311
struct
rte_bus
*
rte_bus_find_by_name
(
const
char
*busname);
312
313
321
enum
rte_iova_mode
rte_bus_get_iommu_class
(
void
);
322
327
#define RTE_REGISTER_BUS(nm, bus) \
328
RTE_INIT_PRIO(businitfn_ ##nm, BUS); \
329
static void businitfn_ ##nm(void) \
330
{\
331
(bus).name = RTE_STR(nm);\
332
rte_bus_register(&bus); \
333
}
334
335
#ifdef __cplusplus
336
}
337
#endif
338
339
#endif
/* _RTE_BUS_H */
Generated by
1.8.1.2