FD.io VPP  v18.01-8-g0eacf49
Vector Packet Processing
bfd_debug.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2016 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  * @file
17  * @brief BFD global declarations
18  */
19 #ifndef __included_bfd_debug_h__
20 #define __included_bfd_debug_h__
21 
22 /* controls debug prints */
23 #define BFD_DEBUG (0)
24 
25 #if BFD_DEBUG
26 #define BFD_DEBUG_FILE_DEF \
27  static const char *__file = NULL; \
28  { \
29  __file = strrchr (__FILE__, '/'); \
30  if (__file) \
31  { \
32  ++__file; \
33  } \
34  else \
35  { \
36  __file = __FILE__; \
37  } \
38  }
39 
40 #define BFD_DBG(fmt, ...) \
41  do \
42  { \
43  BFD_DEBUG_FILE_DEF \
44  static u8 *_s = NULL; \
45  vlib_main_t *vm = vlib_get_main (); \
46  _s = format (_s, "%6.02f:DBG:%s:%d:%s():" fmt, vlib_time_now (vm), \
47  __file, __LINE__, __func__, ##__VA_ARGS__); \
48  printf ("%.*s\n", vec_len (_s), _s); \
49  vec_reset_length (_s); \
50  } \
51  while (0);
52 
53 #define BFD_ERR(fmt, ...) \
54  do \
55  { \
56  BFD_DEBUG_FILE_DEF \
57  static u8 *_s = NULL; \
58  vlib_main_t *vm = vlib_get_main (); \
59  _s = format (_s, "%6.02f:ERR:%s:%d:%s():" fmt, vlib_time_now (vm), \
60  __file, __LINE__, __func__, ##__VA_ARGS__); \
61  printf ("%.*s\n", vec_len (_s), _s); \
62  vec_reset_length (_s); \
63  } \
64  while (0);
65 
66 #define BFD_CLK_FMT "%luus/%lu clocks/%.2fs"
67 #define BFD_CLK_PRN(clocks) \
68  (u64) ((((f64)clocks) / vlib_get_main ()->clib_time.clocks_per_second) * \
69  USEC_PER_SECOND), \
70  (clocks), \
71  (((f64)clocks) / vlib_get_main ()->clib_time.clocks_per_second)
72 
73 #else
74 #define BFD_DBG(...)
75 #define BFD_ERR(...)
76 #endif
77 
78 #endif /* __included_bfd_debug_h__ */
79 
80 /*
81  * fd.io coding-style-patch-verification: ON
82  *
83  * Local Variables:
84  * eval: (c-set-style "gnu")
85  * End:
86  */