first public release
[dpdk.git] / lib / librte_eal / common / include / eal_private.h
1 /*-
2  *   BSD LICENSE
3  * 
4  *   Copyright(c) 2010-2012 Intel Corporation. All rights reserved.
5  *   All rights reserved.
6  * 
7  *   Redistribution and use in source and binary forms, with or without 
8  *   modification, are permitted provided that the following conditions 
9  *   are met:
10  * 
11  *     * Redistributions of source code must retain the above copyright 
12  *       notice, this list of conditions and the following disclaimer.
13  *     * Redistributions in binary form must reproduce the above copyright 
14  *       notice, this list of conditions and the following disclaimer in 
15  *       the documentation and/or other materials provided with the 
16  *       distribution.
17  *     * Neither the name of Intel Corporation nor the names of its 
18  *       contributors may be used to endorse or promote products derived 
19  *       from this software without specific prior written permission.
20  * 
21  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
22  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
23  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
24  *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
25  *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
26  *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
27  *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
28  *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
29  *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
30  *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
31  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  * 
33  *  version: DPDK.L.1.2.3-3
34  */
35
36 #ifndef _EAL_PRIVATE_H_
37 #define _EAL_PRIVATE_H_
38
39 /**
40  * Initialize the memzone subsystem (private to eal).
41  *
42  * @return
43  *   - 0 on success
44  *   - Negative on error
45  */
46 int rte_eal_memzone_init(void);
47
48 /**
49  * Common log initialization function (private to eal).
50  *
51  * Called by environment-specific log initialization function to initialize
52  * log history.
53  *
54  * @param default_log
55  *   The default log stream to be used.
56  * @return
57  *   - 0 on success
58  *   - Negative on error
59  */
60 int rte_eal_common_log_init(FILE *default_log);
61
62 /**
63  * Fill configuration with number of physical and logical processors
64  *
65  * This function is private to EAL.
66  *
67  * Parse /proc/cpuinfo to get the number of physical and logical
68  * processors on the machine.
69  *
70  * @return
71  *   0 on success, negative on error
72  */
73 int rte_eal_cpu_init(void);
74
75 /**
76  * Map memory
77  *
78  * This function is private to EAL.
79  *
80  * Fill configuration structure with these infos, and return 0 on success.
81  *
82  * @return
83  *   0 on success, negative on error
84  */
85 int rte_eal_memory_init(void);
86
87 /**
88  * Configure HPET
89  *
90  * This function is private to EAL.
91  *
92  * Mmap memory areas used by HPET (high precision event timer) that will
93  * provide our time reference.
94  *
95  * @return
96  *   0 on success, negative on error
97  */
98 int rte_eal_hpet_init(void);
99
100 /**
101  * Init early logs
102  *
103  * This function is private to EAL.
104  *
105  * @return
106  *   0 on success, negative on error
107  */
108 int rte_eal_log_early_init(void);
109
110 /**
111  * Init the default log stream
112  *
113  * This function is private to EAL.
114  *
115  * @return
116  *   0 on success, negative on error
117  */
118 int rte_eal_log_init(void);
119
120 /**
121  * Init the default log stream
122  *
123  * This function is private to EAL.
124  *
125  * @return
126  *   0 on success, negative on error
127  */
128 int rte_eal_pci_init(void);
129
130 struct rte_pci_driver;
131 struct rte_pci_device;
132
133 /**
134  * Mmap memory for single PCI device
135  *
136  * This function is private to EAL.
137  *
138  * @return
139  *   0 on success, negative on error
140  */
141 int rte_eal_pci_probe_one_driver(struct rte_pci_driver *dr,
142                 struct rte_pci_device *dev);
143
144 /**
145  * Init tail queues for non-EAL library structures. This is to allow
146  * the rings, mempools, etc. lists to be shared among multiple processes
147  *
148  * This function is private to EAL
149  *
150  * @return
151  *    0 on success, negative on error
152  */
153 int rte_eal_tailqs_init(void);
154
155 /**
156  * Init interrupt handling.
157  *
158  * This function is private to EAL.
159  *
160  * @return
161  *  0 on success, negative on error
162  */
163 int rte_eal_intr_init(void);
164
165 /**
166  * Init alarm mechanism. This is to allow a callback be called after
167  * specific time.
168  *
169  * This function is private to EAL.
170  *
171  * @return
172  *  0 on success, negative on error
173  */
174 int rte_eal_alarm_init(void);
175
176 #endif /* _EAL_PRIVATE_H_ */