vlib: introduce vlib_get_main_by_index(), vlib_get_n_threads()
[vpp.git] / src / vlib / global_funcs.h
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  * global_funcs.h: global data structure access functions
17  */
18
19 #ifndef included_vlib_global_funcs_h_
20 #define included_vlib_global_funcs_h_
21
22 always_inline u32
23 vlib_get_n_threads ()
24 {
25   return vec_len (vlib_mains);
26 }
27
28 always_inline vlib_main_t *
29 vlib_get_main_by_index (u32 thread_index)
30 {
31   vlib_main_t *vm;
32   vm = vlib_mains[thread_index];
33   ASSERT (vm);
34   return vm;
35 }
36
37 always_inline vlib_main_t *
38 vlib_get_main (void)
39 {
40   return vlib_get_main_by_index (vlib_get_thread_index ());
41 }
42
43 always_inline vlib_main_t *
44 vlib_get_first_main (void)
45 {
46   return vlib_get_main_by_index (0);
47 }
48
49 always_inline vlib_thread_main_t *
50 vlib_get_thread_main ()
51 {
52   return &vlib_thread_main;
53 }
54
55 #endif /* included_vlib_global_funcs_h_ */
56
57 /*
58  * fd.io coding-style-patch-verification: ON
59  *
60  * Local Variables:
61  * eval: (c-set-style "gnu")
62  * End:
63  */