1 /* 2 * ipmi_debug.h 3 * 4 * MontaVista IPMI interface, debug information. 5 * 6 * Author: MontaVista Software, Inc. 7 * Corey Minyard <minyard@mvista.com> 8 * source@mvista.com 9 * 10 * Copyright 2002,2003,2004,2005 MontaVista Software Inc. 11 * 12 * This software is available to you under a choice of one of two 13 * licenses. You may choose to be licensed under the terms of the GNU 14 * Lesser General Public License (GPL) Version 2 or the modified BSD 15 * license below. The following disclamer applies to both licenses: 16 * 17 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 23 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 25 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 26 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * 28 * GNU Lesser General Public Licence 29 * 30 * This program is free software; you can redistribute it and/or 31 * modify it under the terms of the GNU Lesser General Public License 32 * as published by the Free Software Foundation; either version 2 of 33 * the License, or (at your option) any later version. 34 * 35 * You should have received a copy of the GNU Lesser General Public 36 * License along with this program; if not, write to the Free 37 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 38 * 39 * Modified BSD Licence 40 * 41 * Redistribution and use in source and binary forms, with or without 42 * modification, are permitted provided that the following conditions 43 * are met: 44 * 45 * 1. Redistributions of source code must retain the above copyright 46 * notice, this list of conditions and the following disclaimer. 47 * 2. Redistributions in binary form must reproduce the above 48 * copyright notice, this list of conditions and the following 49 * disclaimer in the documentation and/or other materials provided 50 * with the distribution. 51 * 3. The name of the author may not be used to endorse or promote 52 * products derived from this software without specific prior 53 * written permission. 54 */ 55 56 #ifndef OPENIPMI_DEBUG_H 57 #define OPENIPMI_DEBUG_H 58 59 #include <OpenIPMI/os_handler.h> 60 61 #ifdef __cplusplus 62 extern "C" { 63 #endif 64 65 extern unsigned int i__ipmi_log_mask; 66 67 /* Log normal IPMI messages, but not low-level protocol messages. */ 68 #define DEBUG_MSG_BIT (1 << 0) 69 70 /* Log all messages. */ 71 #define DEBUG_RAWMSG_BIT (1 << 1) 72 73 /* Log events that are received. */ 74 #define DEBUG_EVENTS_BIT (1 << 3) 75 76 /* Force the given connection to no longer work */ 77 #define DEBUG_CON0_FAIL_BIT (1 << 4) 78 #define DEBUG_CON1_FAIL_BIT (1 << 5) 79 #define DEBUG_CON2_FAIL_BIT (1 << 6) 80 #define DEBUG_CON3_FAIL_BIT (1 << 7) 81 82 #define DEBUG_MSG_ERR_BIT (1 << 8) 83 84 #define DEBUG_MSG (i__ipmi_log_mask & DEBUG_MSG_BIT) 85 #define DEBUG_MSG_ENABLE() i__ipmi_log_mask |= DEBUG_MSG_BIT 86 #define DEBUG_MSG_DISABLE() i__ipmi_log_mask &= ~DEBUG_MSG_BIT 87 88 #define DEBUG_RAWMSG (i__ipmi_log_mask & DEBUG_RAWMSG_BIT) 89 #define DEBUG_RAWMSG_ENABLE() i__ipmi_log_mask |= DEBUG_RAWMSG_BIT 90 #define DEBUG_RAWMSG_DISABLE() i__ipmi_log_mask &= ~DEBUG_RAWMSG_BIT 91 92 #define DEBUG_EVENTS (i__ipmi_log_mask & DEBUG_EVENTS_BIT) 93 #define DEBUG_EVENTS_ENABLE() i__ipmi_log_mask |= DEBUG_EVENTS_BIT 94 #define DEBUG_EVENTS_DISABLE() i__ipmi_log_mask &= ~DEBUG_EVENTS_BIT 95 96 #define DEBUG_CON_FAIL(con) (i__ipmi_log_mask & (DEBUG_CON0_FAIL_BIT << con)) 97 #define DEBUG_CON_FAIL_ENABLE(con) \ 98 i__ipmi_log_mask |= (DEBUG_CON0_FAIL_BIT << con) 99 #define DEBUG_CON_FAIL_DISABLE(con) \ 100 i__ipmi_log_mask &= ~(DEBUG_CON0_FAIL_BIT << con) 101 102 #define DEBUG_MSG_ERR (i__ipmi_log_mask & DEBUG_MSG_ERR_BIT) 103 #define DEBUG_MSG_ERR_ENABLE() i__ipmi_log_mask |= DEBUG_MSG_ERR_BIT 104 #define DEBUG_MSG_ERR_DISABLE() i__ipmi_log_mask &= ~DEBUG_MSG_ERR_BIT 105 106 #ifdef IPMI_CHECK_LOCKS 107 void ipmi_report_lock_error(os_handler_t *handler, char *str); 108 #define IPMI_REPORT_LOCK_ERROR(handler, str) ipmi_report_lock_error(handler, \ 109 str) 110 #else 111 #define IPMI_REPORT_LOCK_ERROR(handler, str) do {} while (0) 112 #endif 113 114 extern int i__ipmi_debug_locks; 115 #define DEBUG_LOCKS (i__ipmi_debug_locks) 116 #define DEBUG_LOCKS_ENABLE() i__ipmi_debug_locks = 1 117 #define DEBUG_LOCKS_DISABLE() i__ipmi_debug_locks = 0 118 119 #ifdef __cplusplus 120 } 121 #endif 122 123 #endif /* OPENIPMI_DEBUG_H */ 124