DPDK
18.05.1
Main Page
Related Pages
Data Structures
Files
Examples
File List
Globals
lib
librte_pci
rte_pci.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright(c) 2010-2015 Intel Corporation.
3
* Copyright 2013-2014 6WIND S.A.
4
*/
5
6
#ifndef _RTE_PCI_H_
7
#define _RTE_PCI_H_
8
15
#ifdef __cplusplus
16
extern
"C"
{
17
#endif
18
19
#include <stdio.h>
20
#include <stdlib.h>
21
#include <limits.h>
22
#include <errno.h>
23
#include <sys/queue.h>
24
#include <stdint.h>
25
#include <inttypes.h>
26
27
#include <
rte_debug.h
>
28
#include <
rte_interrupts.h
>
29
31
#define PCI_PRI_FMT "%.4" PRIx16 ":%.2" PRIx8 ":%.2" PRIx8 ".%" PRIx8
32
#define PCI_PRI_STR_SIZE sizeof("XXXXXXXX:XX:XX.X")
33
35
#define PCI_SHORT_PRI_FMT "%.2" PRIx8 ":%.2" PRIx8 ".%" PRIx8
36
38
#define PCI_FMT_NVAL 4
39
41
#define PCI_RESOURCE_FMT_NVAL 3
42
44
#define PCI_MAX_RESOURCE 6
45
50
struct
rte_pci_id
{
51
uint32_t
class_id
;
52
uint16_t
vendor_id
;
53
uint16_t
device_id
;
54
uint16_t
subsystem_vendor_id
;
55
uint16_t
subsystem_device_id
;
56
};
57
61
struct
rte_pci_addr
{
62
uint32_t
domain
;
63
uint8_t
bus
;
64
uint8_t
devid
;
65
uint8_t
function
;
66
};
67
69
#define PCI_ANY_ID (0xffff)
70
#define RTE_CLASS_ANY_ID (0xffffff)
71
75
struct
pci_map
{
76
void
*addr;
77
char
*path;
78
uint64_t offset;
79
uint64_t size;
80
uint64_t phaddr;
81
};
82
83
struct
pci_msix_table {
84
int
bar_index;
85
uint32_t offset;
86
uint32_t size;
87
};
88
94
struct
mapped_pci_resource
{
95
TAILQ_ENTRY(
mapped_pci_resource
) next;
96
97
struct
rte_pci_addr
pci_addr;
98
char
path[PATH_MAX];
99
int
nb_maps;
100
struct
pci_map
maps[PCI_MAX_RESOURCE];
101
struct
pci_msix_table msix_table;
102
};
103
104
106
TAILQ_HEAD
(mapped_pci_res_list,
mapped_pci_resource
);
107
122
int
eal_parse_pci_BDF
(
const
char
*input,
struct
rte_pci_addr
*dev_addr);
123
137
int
eal_parse_pci_DomBDF
(
const
char
*input,
struct
rte_pci_addr
*dev_addr);
138
151
void
rte_pci_device_name
(
const
struct
rte_pci_addr
*addr,
152
char
*output,
size_t
size);
153
167
int
rte_eal_compare_pci_addr
(
const
struct
rte_pci_addr
*addr,
168
const
struct
rte_pci_addr
*addr2);
169
182
int
rte_pci_addr_cmp
(
const
struct
rte_pci_addr
*addr,
183
const
struct
rte_pci_addr
*addr2);
184
185
198
int
rte_pci_addr_parse
(
const
char
*str,
struct
rte_pci_addr
*addr);
199
217
void
*
pci_map_resource
(
void
*requested_addr,
int
fd, off_t offset,
218
size_t
size,
int
additional_flags);
219
228
void
pci_unmap_resource
(
void
*requested_addr,
size_t
size);
229
230
#ifdef __cplusplus
231
}
232
#endif
233
234
#endif
/* _RTE_PCI_H_ */
Generated by
1.8.1.2