a74f41f67412e71881b6086ca25029004c60f058
[dpdk.git] / lib / librte_eal / common / include / rte_tailq_elem.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  */
34
35 /**
36  * @file
37  *
38  * This file contains the type of the tailq elem recognised by DPDK, which
39  * can be used to fill out an array of structures describing the tailq.
40  *
41  * In order to populate an array, the user of this file must define this macro:
42  * rte_tailq_elem(idx, name). For example:
43  *
44  * @code
45  * enum rte_tailq_t {
46  * #define rte_tailq_elem(idx, name)     idx,
47  * #define rte_tailq_end(idx)            idx
48  * #include <rte_tailq_elem.h>
49  * };
50  *
51  * const char* rte_tailq_names[RTE_MAX_TAILQ] = {
52  * #define rte_tailq_elem(idx, name)     name,
53  * #include <rte_tailq_elem.h>
54  * };
55  * @endcode
56  *
57  * Note that this file can be included multiple times within the same file.
58  */
59
60 #ifndef rte_tailq_elem
61 #define rte_tailq_elem(idx, name)
62 #endif /* rte_tailq_elem */
63
64 #ifndef rte_tailq_end
65 #define rte_tailq_end(idx)
66 #endif /* rte_tailq_end */
67
68 rte_tailq_elem(RTE_TAILQ_PCI, "PCI_RESOURCE_LIST")
69
70 rte_tailq_elem(RTE_TAILQ_MEMPOOL, "RTE_MEMPOOL")
71
72 rte_tailq_elem(RTE_TAILQ_RING, "RTE_RING")
73
74 rte_tailq_elem(RTE_TAILQ_HASH, "RTE_HASH")
75
76 rte_tailq_elem(RTE_TAILQ_FBK_HASH, "RTE_FBK_HASH")
77
78 rte_tailq_elem(RTE_TAILQ_LPM, "RTE_LPM")
79
80 rte_tailq_elem(RTE_TAILQ_PM, "RTE_PM")
81
82 rte_tailq_elem(RTE_TAILQ_ACL, "RTE_ACL")
83
84 rte_tailq_end(RTE_TAILQ_NUM)
85
86 #undef rte_tailq_elem
87 #undef rte_tailq_end