FD.io VPP
v16.06
Vector Packet Processing
Main Page
Related Pages
Data Structures
Source
Files
Symbols
pci.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015 Cisco and/or its affiliates.
3
* Licensed under the Apache License, Version 2.0 (the "License");
4
* you may not use this file except in compliance with the License.
5
* You may obtain a copy of the License at:
6
*
7
* http://www.apache.org/licenses/LICENSE-2.0
8
*
9
* Unless required by applicable law or agreed to in writing, software
10
* distributed under the License is distributed on an "AS IS" BASIS,
11
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
* See the License for the specific language governing permissions and
13
* limitations under the License.
14
*/
15
/*
16
* unix/pci.h: Linux specific pci state
17
*
18
* Copyright (c) 2008 Eliot Dresselhaus
19
*
20
* Permission is hereby granted, free of charge, to any person obtaining
21
* a copy of this software and associated documentation files (the
22
* "Software"), to deal in the Software without restriction, including
23
* without limitation the rights to use, copy, modify, merge, publish,
24
* distribute, sublicense, and/or sell copies of the Software, and to
25
* permit persons to whom the Software is furnished to do so, subject to
26
* the following conditions:
27
*
28
* The above copyright notice and this permission notice shall be
29
* included in all copies or substantial portions of the Software.
30
*
31
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
32
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
33
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
34
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
35
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
36
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
37
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38
*/
39
40
#ifndef included_unix_pci_h
41
#define included_unix_pci_h
42
43
#include <
vlib/pci/pci.h
>
44
45
typedef
struct
{
46
/* /sys/bus/pci/devices/... directory name for this device. */
47
u8
*
dev_dir_name
;
48
49
/* Resource file descriptors. */
50
int
*
resource_fds
;
51
52
/* File descriptor for config space read/write. */
53
int
config_fd
;
54
55
/* PCI bus address for this devices parsed from /sys/bus/pci/devices name. */
56
vlib_pci_addr_t
bus_address
;
57
58
/* File descriptor for /dev/uio%d */
59
int
uio_fd
;
60
61
/* Minor device for uio device. */
62
u32
uio_minor
;
63
64
/* Index given by unix_file_add. */
65
u32
unix_file_index
;
66
67
/* Input node to handle interrupts for this device. */
68
u32
device_input_node_index
;
69
70
/* Node runtime will be a bitmap of device indices with pending interrupts. */
71
u32
device_index
;
72
}
linux_pci_device_t
;
73
74
/* Pool of PCI devices. */
75
typedef
struct
{
76
vlib_main_t
*
vlib_main
;
77
vlib_pci_device_t
*
pci_devs
;
78
linux_pci_device_t
*
linux_pci_devices
;
79
pci_device_registration_t
*
pci_device_registrations
;
80
uword
*
pci_dev_index_by_pci_addr
;
81
}
linux_pci_main_t
;
82
83
extern
linux_pci_main_t
linux_pci_main
;
84
85
always_inline
linux_pci_device_t
*
86
pci_dev_for_linux
(
vlib_pci_device_t
* dev)
87
{
88
linux_pci_main_t
* pm = &
linux_pci_main
;
89
return
pool_elt_at_index
(pm->
linux_pci_devices
, dev->
os_handle
);
90
}
91
92
/* Call to allocate/initialize the pci subsystem.
93
This is not an init function so that users can explicitly enable
94
pci only when it's needed. */
95
clib_error_t
*
pci_bus_init
(
vlib_main_t
* vm);
96
97
clib_error_t
*
vlib_pci_bind_to_uio
(
vlib_pci_device_t
* d,
char
* uio_driver_name);
98
99
#endif
/* included_unix_pci_h */
linux_pci_main_t::pci_device_registrations
pci_device_registration_t * pci_device_registrations
Definition:
pci.h:79
linux_pci_main_t
Definition:
pci.h:75
linux_pci_device_t::dev_dir_name
u8 * dev_dir_name
Definition:
pci.h:47
linux_pci_device_t::unix_file_index
u32 unix_file_index
Definition:
pci.h:65
vlib_pci_bind_to_uio
clib_error_t * vlib_pci_bind_to_uio(vlib_pci_device_t *d, char *uio_driver_name)
Definition:
pci.c:58
linux_pci_device_t::resource_fds
int * resource_fds
Definition:
pci.h:50
linux_pci_device_t::bus_address
vlib_pci_addr_t bus_address
Definition:
pci.h:56
always_inline
#define always_inline
Definition:
clib.h:84
linux_pci_device_t::device_input_node_index
u32 device_input_node_index
Definition:
pci.h:68
linux_pci_main_t::vlib_main
vlib_main_t * vlib_main
Definition:
pci.h:76
pci_bus_init
clib_error_t * pci_bus_init(vlib_main_t *vm)
Definition:
pci.c:582
pool_elt_at_index
#define pool_elt_at_index(p, i)
Definition:
pool.h:346
linux_pci_main_t::pci_dev_index_by_pci_addr
uword * pci_dev_index_by_pci_addr
Definition:
pci.h:80
linux_pci_device_t::config_fd
int config_fd
Definition:
pci.h:53
linux_pci_main_t::pci_devs
vlib_pci_device_t * pci_devs
Definition:
pci.h:77
linux_pci_main
linux_pci_main_t linux_pci_main
Definition:
pci.c:55
linux_pci_device_t::uio_fd
int uio_fd
Definition:
pci.h:59
linux_pci_device_t::device_index
u32 device_index
Definition:
pci.h:71
vlib_pci_device_t
Definition:
pci.h:56
pci_dev_for_linux
always_inline linux_pci_device_t * pci_dev_for_linux(vlib_pci_device_t *dev)
Definition:
pci.h:86
linux_pci_device_t
Definition:
pci.h:45
u32
unsigned int u32
Definition:
types.h:88
uword
u64 uword
Definition:
types.h:112
clib_error_t
Definition:
error.h:75
vlib_pci_device_t::os_handle
uword os_handle
Definition:
pci.h:58
pci.h
u8
unsigned char u8
Definition:
types.h:56
vlib_main_t
Definition:
main.h:59
pci_device_registration_t
struct _pci_device_registration pci_device_registration_t
linux_pci_main_t::linux_pci_devices
linux_pci_device_t * linux_pci_devices
Definition:
pci.h:78
linux_pci_device_t::uio_minor
u32 uio_minor
Definition:
pci.h:62
vlib
vlib
unix
pci.h
Generated on Thu Sep 1 2016 09:11:31 for FD.io VPP by
1.8.11