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 : Copyright (c) 2001-2005 Eliot Dresselhaus 17 : 18 : Permission is hereby granted, free of charge, to any person obtaining 19 : a copy of this software and associated documentation files (the 20 : "Software"), to deal in the Software without restriction, including 21 : without limitation the rights to use, copy, modify, merge, publish, 22 : distribute, sublicense, and/or sell copies of the Software, and to 23 : permit persons to whom the Software is furnished to do so, subject to 24 : the following conditions: 25 : 26 : The above copyright notice and this permission notice shall be 27 : included in all copies or substantial portions of the Software. 28 : 29 : THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 30 : EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 31 : MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 32 : NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 33 : LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 34 : OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 35 : WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 36 : */ 37 : 38 : #ifndef included_os_h 39 : #define included_os_h 40 : 41 : #include <vppinfra/clib.h> 42 : #include <vppinfra/types.h> 43 : 44 : /* External panic function. */ 45 : void os_panic (void); 46 : 47 : /* External exit function analogous to unix exit. */ 48 : void os_exit (int code); 49 : 50 : /* External function to print a line. */ 51 : void os_puts (u8 * string, uword length, uword is_error); 52 : 53 : /* External function to handle out of memory. */ 54 : void os_out_of_memory (void); 55 : 56 : /* Estimate, measure or divine CPU timestamp clock frequency. */ 57 : f64 os_cpu_clock_frequency (void); 58 : 59 : extern __thread uword __os_thread_index; 60 : extern __thread uword __os_numa_index; 61 : 62 : static_always_inline uword 63 179415297 : os_get_thread_index (void) 64 : { 65 179415297 : return __os_thread_index; 66 : } 67 : 68 : static_always_inline void 69 74 : os_set_thread_index (uword thread_index) 70 : { 71 74 : __os_thread_index = thread_index; 72 74 : } 73 : 74 : static_always_inline uword 75 559 : os_get_numa_index (void) 76 : { 77 559 : return __os_numa_index; 78 : } 79 : 80 : static_always_inline void 81 613 : os_set_numa_index (uword numa_index) 82 : { 83 613 : __os_numa_index = numa_index; 84 613 : } 85 : 86 : static_always_inline uword 87 : os_get_cpu_number (void) __attribute__ ((deprecated)); 88 : 89 : static_always_inline uword 90 : os_get_cpu_number (void) 91 : { 92 : return __os_thread_index; 93 : } 94 : 95 : uword os_get_nthreads (void); 96 : 97 : #include <vppinfra/smp.h> 98 : 99 : #endif /* included_os_h */ 100 : 101 : /* 102 : * fd.io coding-style-patch-verification: ON 103 : * 104 : * Local Variables: 105 : * eval: (c-set-style "gnu") 106 : * End: 107 : */