/***************************************************************************** AudioScience HPI driver Copyright (C) 1997-2011 AudioScience Inc. This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation; This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Debug macros. *****************************************************************************/ #ifndef _HPIDEBUG_H #define _HPIDEBUG_H #include "hpi_internal.h" /* Define debugging levels. */ enum { HPI_DEBUG_LEVEL_ERROR = 0, /* always log errors */ HPI_DEBUG_LEVEL_WARNING = 1, HPI_DEBUG_LEVEL_NOTICE = 2, HPI_DEBUG_LEVEL_INFO = 3, HPI_DEBUG_LEVEL_DEBUG = 4, HPI_DEBUG_LEVEL_VERBOSE = 5 /* same printk level as DEBUG */ }; #define HPI_DEBUG_LEVEL_DEFAULT HPI_DEBUG_LEVEL_NOTICE /* an OS can define an extra flag string that is appended to the start of each message, eg see linux kernel hpios.h */ #ifdef SOURCEFILE_NAME #define FILE_LINE SOURCEFILE_NAME ":" __stringify(__LINE__) " " #else #define FILE_LINE __FILE__ ":" __stringify(__LINE__) " " #endif #define HPI_DEBUG_ASSERT(expression) \ do { \ if (!(expression)) { \ printk(KERN_ERR FILE_LINE \ "ASSERT " __stringify(expression)); \ } \ } while (0) #define HPI_DEBUG_LOG(level, ...) \ do { \ if (hpi_debug_level >= HPI_DEBUG_LEVEL_##level) { \ printk(HPI_DEBUG_FLAG_##level \ FILE_LINE __VA_ARGS__); \ } \ } while (0) void hpi_debug_init(void); int hpi_debug_level_set(int level); int hpi_debug_level_get(void); /* needed by Linux driver for dynamic debug level changes */ extern int hpi_debug_level; void hpi_debug_message(struct hpi_message *phm, char *sz_fileline); void hpi_debug_data(u16 *pdata, u32 len); #define HPI_DEBUG_DATA(pdata, len) \ do { \ if (hpi_debug_level >= HPI_DEBUG_LEVEL_VERBOSE) \ hpi_debug_data(pdata, len); \ } while (0) #define HPI_DEBUG_MESSAGE(level, phm) \ do { \ if (hpi_debug_level >= HPI_DEBUG_LEVEL_##level) { \ hpi_debug_message(phm, HPI_DEBUG_FLAG_##level \ FILE_LINE __stringify(level)); \ } \ } while (0) #define HPI_DEBUG_RESPONSE(phr) \ do { \ if (((hpi_debug_level >= HPI_DEBUG_LEVEL_DEBUG) && \ (phr->error)) ||\ (hpi_debug_level >= HPI_DEBUG_LEVEL_VERBOSE)) \ printk(KERN_DEBUG "HPI_RES%d,%d,%d\n", \ phr->version, phr->error, phr->specific_error); \ } while (0) #ifndef compile_time_assert #define compile_time_assert(cond, msg) \ typedef char msg[(cond) ? 1 : -1] #endif #endif /* _HPIDEBUG_H_ */ ivate-remove&id=10435c1192d06bdb0bac7666452d8219d7e7c477'>tools/scripts
diff options
context:
space:
mode:
authorFeng <fgao@ikuai8.com>2017-01-20 21:40:43 +0800
committerPablo Neira Ayuso <pablo@netfilter.org>2017-02-02 14:30:19 +0100
commit10435c1192d06bdb0bac7666452d8219d7e7c477 (patch)
tree93b76419142fe17b1d162d062c663297a3e8a965 /tools/scripts
parent1a28ad74ebd8f9d3c7eae0d781f72a6d30545e17 (diff)
netfilter: nf_tables: Eliminate duplicated code in nf_tables_table_enable()
If something fails in nf_tables_table_enable(), it unregisters the chains. But the rollback code is the same as nf_tables_table_disable() almostly, except there is one counter check. Now create one wrapper function to eliminate the duplicated codes. Signed-off-by: Feng <fgao@ikuai8.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'tools/scripts')