Line data Source code
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 : * pg_init.c: VLIB packet generator 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 : #include <vlib/vlib.h> 41 : #include <vnet/pg/pg.h> 42 : 43 : /* Global main structure. */ 44 : pg_main_t pg_main; 45 : 46 : static clib_error_t * 47 575 : pg_init (vlib_main_t * vm) 48 : { 49 : clib_error_t *error; 50 575 : pg_main_t *pg = &pg_main; 51 575 : vlib_thread_main_t *vtm = vlib_get_thread_main (); 52 575 : u32 num_threads = 1 /* main thread */ + vtm->n_threads; 53 : 54 575 : pg->if_index_by_if_id = hash_create (0, sizeof (uword)); 55 : 56 575 : if ((error = vlib_call_init_function (vm, vnet_main_init))) 57 0 : goto done; 58 : 59 575 : if ((error = vlib_call_init_function (vm, pg_cli_init))) 60 0 : goto done; 61 : 62 575 : vec_validate (pg->replay_buffers_by_thread, num_threads); 63 : 64 575 : done: 65 575 : return error; 66 : } 67 : 68 74879 : VLIB_INIT_FUNCTION (pg_init); 69 : 70 : /* 71 : * fd.io coding-style-patch-verification: ON 72 : * 73 : * Local Variables: 74 : * eval: (c-set-style "gnu") 75 : * End: 76 : */