[IOU] Add WPP tracing to IOU bus driver.
[mirror/winof/.git] / core / iou / kernel / iou_driver.h
index b4cefae..d8c028f 100644 (file)
 #endif\r
 #include <ntstrsafe.h>\r
 \r
+extern uint32_t                g_iou_dbg_level;\r
+extern uint32_t                g_iou_dbg_flags;\r
+\r
+#if defined(EVENT_TRACING)\r
+//\r
+// Software Tracing Definitions \r
+//\r
+\r
+#define WPP_CONTROL_GUIDS \\r
+       WPP_DEFINE_CONTROL_GUID(IOUCtlGuid,(A0090FEF,01BB,4617,AF1E,FD02FD5B24ED),  \\r
+       WPP_DEFINE_BIT( IOU_DBG_ERROR) \\r
+       WPP_DEFINE_BIT( IOU_DBG_DRV) \\r
+       WPP_DEFINE_BIT( IOU_DBG_PNP) \\r
+       WPP_DEFINE_BIT( IOU_DBG_POWER) \\r
+       WPP_DEFINE_BIT( IOU_DBG_PORT) \\r
+       WPP_DEFINE_BIT( IOU_DBG_IOU))\r
+\r
+\r
+\r
+#define WPP_LEVEL_FLAGS_ENABLED(lvl, flags) (WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level  >= lvl)\r
+#define WPP_LEVEL_FLAGS_LOGGER(lvl,flags) WPP_LEVEL_LOGGER(flags)\r
+#define WPP_FLAG_ENABLED(flags)(WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level  >= TRACE_LEVEL_VERBOSE)\r
+#define WPP_FLAG_LOGGER(flags) WPP_LEVEL_LOGGER(flags)\r
+\r
+\r
+// begin_wpp config\r
+// IOU_ENTER(FLAG);\r
+// IOU_EXIT(FLAG);\r
+// USEPREFIX(IOU_PRINT, "%!STDPREFIX! [IOU] :%!FUNC!() :");\r
+// USESUFFIX(IOU_ENTER, " [IOU] :%!FUNC!():[");\r
+// USESUFFIX(IOU_EXIT, " [IOU] :%!FUNC!():]");\r
+// end_wpp\r
+\r
+\r
+#else\r
+\r
+\r
+#include <evntrace.h>\r
 \r
 /*\r
- * Main header for IB Bus driver.\r
+ * Debug macros\r
  */\r
 \r
-#define IOU_ENTER( lvl )                       \\r
-       CL_ENTER( lvl, iou_globals.dbg_lvl )\r
 \r
-#define IOU_EXIT( lvl )                                \\r
-       CL_EXIT( lvl, iou_globals.dbg_lvl )\r
+#define IOU_DBG_ERR            (1 << 0)\r
+#define IOU_DBG_DRV            (1 << 1)\r
+#define IOU_DBG_PNP            (1 << 2)\r
+#define IOU_DBG_POWER  (1 << 3)\r
+#define IOU_DBG_PORT   (1 << 4)\r
+#define IOU_DBG_IOU            (1 << 5)\r
+\r
+#define IOU_DBG_ERROR  (CL_DBG_ERROR | IOU_DBG_ERR)\r
+#define IOU_DBG_ALL            CL_DBG_ALL\r
+\r
+#if DBG\r
+\r
+// assignment of _level_ is need to to overcome warning C4127\r
+#define IOU_PRINT(_level_,_flag_,_msg_) \\r
+       { \\r
+               if( g_iou_dbg_level >= (_level_) ) \\r
+                       CL_TRACE( _flag_, g_iou_dbg_flags, _msg_ ); \\r
+       }\r
+\r
+#define IOU_PRINT_EXIT(_level_,_flag_,_msg_) \\r
+       { \\r
+               if( g_iou_dbg_level >= (_level_) ) \\r
+                       CL_TRACE( _flag_, g_iou_dbg_flags, _msg_ );\\r
+               IOU_EXIT(_flag_);\\r
+       }\r
 \r
-#define IOU_TRACE( lvl, msg )          \\r
-       CL_TRACE( lvl, iou_globals.dbg_lvl, msg )\r
+#define IOU_ENTER(_flag_) \\r
+       { \\r
+               if( g_iou_dbg_level >= TRACE_LEVEL_VERBOSE ) \\r
+                       CL_ENTER( _flag_, g_iou_dbg_flags ); \\r
+       }\r
 \r
-#define IOU_TRACE_EXIT( lvl, msg )     \\r
-       CL_TRACE_EXIT( lvl, iou_globals.dbg_lvl, msg )\r
+#define IOU_EXIT(_flag_)\\r
+       { \\r
+               if( g_iou_dbg_level >= TRACE_LEVEL_VERBOSE ) \\r
+                       CL_EXIT( _flag_, g_iou_dbg_flags ); \\r
+       }\r
+\r
+\r
+#else\r
+\r
+#define IOU_PRINT(lvl, flags, msg)\r
+\r
+#define IOU_PRINT_EXIT(_level_,_flag_,_msg_)\r
+\r
+#define IOU_ENTER(_flag_)\r
+\r
+#define IOU_EXIT(_flag_)\r
+\r
+\r
+#endif\r
+\r
+\r
+#endif //EVENT_TRACING\r
+\r
+/*\r
+ * Main header for IB Bus driver.\r
+ */\r
 \r
-#define IOU_PRINT( lvl, msg )          \\r
-       CL_PRINT( lvl, iou_globals.dbl_lvl, msg )\r
 \r
-#define IOU_DBG_ERROR  CL_DBG_ERROR\r
-#define IOU_DBG_DRV            (1 << 0)\r
-#define IOU_DBG_PNP            (1 << 1)\r
-#define IOU_DBG_POWER  (1 << 2)\r
-#define IOU_DBG_PORT   (1 << 3)\r
-#define IOU_DBG_IOU            (1 << 4)\r
 \r
 /*\r
  * ALLOC_PRAGMA sections:\r
@@ -160,9 +238,6 @@ typedef struct _iou_pdo_ext
  */\r
 typedef struct _iou_globals\r
 {\r
-       /* Debug level. */\r
-       uint32_t                                dbg_lvl;\r
-\r
        /* Driver object.  Used for creating child devices. */\r
        DRIVER_OBJECT                   *p_driver_obj;\r
 \r