Imported Upstream version 16.04
[deb_dpdk.git] / examples / ip_pipeline / thread_fe.h
1 /*-
2  *   BSD LICENSE
3  *
4  *   Copyright(c) 2010-2015 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 #ifndef THREAD_FE_H_
35 #define THREAD_FE_H_
36
37 static inline struct rte_ring *
38 app_thread_msgq_in_get(struct app_params *app,
39                 uint32_t socket_id, uint32_t core_id, uint32_t ht_id)
40 {
41         char msgq_name[32];
42         ssize_t param_idx;
43
44         snprintf(msgq_name, sizeof(msgq_name),
45                 "MSGQ-REQ-CORE-s%" PRIu32 "c%" PRIu32 "%s",
46                 socket_id,
47                 core_id,
48                 (ht_id) ? "h" : "");
49         param_idx = APP_PARAM_FIND(app->msgq_params, msgq_name);
50
51         if (param_idx < 0)
52                 return NULL;
53
54         return app->msgq[param_idx];
55 }
56
57 static inline struct rte_ring *
58 app_thread_msgq_out_get(struct app_params *app,
59                 uint32_t socket_id, uint32_t core_id, uint32_t ht_id)
60 {
61         char msgq_name[32];
62         ssize_t param_idx;
63
64         snprintf(msgq_name, sizeof(msgq_name),
65                 "MSGQ-RSP-CORE-s%" PRIu32 "c%" PRIu32 "%s",
66                 socket_id,
67                 core_id,
68                 (ht_id) ? "h" : "");
69         param_idx = APP_PARAM_FIND(app->msgq_params, msgq_name);
70
71         if (param_idx < 0)
72                 return NULL;
73
74         return app->msgq[param_idx];
75
76 }
77
78 int
79 app_pipeline_thread_cmd_push(struct app_params *app);
80
81 int
82 app_pipeline_enable(struct app_params *app,
83                 uint32_t core_id,
84                 uint32_t socket_id,
85                 uint32_t hyper_th_id,
86                 uint32_t pipeline_id);
87
88 int
89 app_pipeline_disable(struct app_params *app,
90                 uint32_t core_id,
91                 uint32_t socket_id,
92                 uint32_t hyper_th_id,
93                 uint32_t pipeline_id);
94
95 int
96 app_thread_headroom(struct app_params *app,
97                 uint32_t core_id,
98                 uint32_t socket_id,
99                 uint32_t hyper_th_id);
100
101 #endif /* THREAD_FE_H_ */