/* * This is part of the Sequans SQN1130 driver. * Copyright 2008 SEQUANS Communications * Written by Andy Shevchenko , * Dmitriy Chumak * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. */ #ifndef _SQN_MSG_H #define _SQN_MSG_H #include #include #include #include "version.h" #define sqn_pr(level, fmt, arg...) \ do { \ char kthread_name[TASK_COMM_LEN] = { 0 }; \ /* task_lock(current); */ \ strncpy(kthread_name, current->comm \ , sizeof(current->comm)); \ /* task_unlock(current); */ \ printk(level "%s: %s: %s: " fmt \ , SQN_MODULE_NAME, kthread_name \ , __func__ \ , ##arg); \ } while (0) #if defined(DEBUG) #ifdef SQN_DEBUG_LEVEL_INFO #define DEBUG_LEVEL KERN_INFO #else #define DEBUG_LEVEL KERN_DEBUG #endif #define sqn_pr_dbg(fmt, arg...) sqn_pr(DEBUG_LEVEL, fmt, ##arg) #ifdef SQN_DEBUG_DUMP #define sqn_pr_dbg_dump(prefix, data, len) \ do { \ unsigned int i = 0; \ unsigned int width = 16; \ unsigned int len_ = (unsigned int)(len); \ while (i < len_) { \ if (i % width == 0) \ printk(DEBUG_LEVEL "%s: %s: %04x ", \ SQN_MODULE_NAME, (prefix), i); \ printk("%02x ", ((unsigned char *)(data))[i++]);\ if ((i % width == 0) || (i == len_)) \ printk("\n"); \ } \ } while (0) #else /* !SQN_DEBUG_DUMP */ #define sqn_pr_dbg_dump(prefix, data, len) do {} while (0) #endif /* SQN_DEBUG_DUMP */ #ifdef SQN_DEBUG_TRACE #define sqn_pr_enter() sqn_pr_dbg("%s\n", "enter") #define sqn_pr_leave() sqn_pr_dbg("%s\n", "leave") #else /* !SQN_DEBUG_TRACE */ #define sqn_pr_enter() do {} while (0) #define sqn_pr_leave() do {} while (0) #endif /* SQN_DEBUG_TRACE */ #else /* !DEBUG */ #define sqn_pr_dbg(fmt, arg...) do {} while (0) #define sqn_pr_dbg_dump(prefix, data, len) do {} while (0) #define sqn_pr_enter() do {} while (0) #define sqn_pr_leave() do {} while (0) #endif /* DEBUG */ #define sqn_pr_info(fmt, arg...) \ pr_info("%s: " fmt, SQN_MODULE_NAME, ##arg) #define sqn_pr_warn(fmt, arg...) \ pr_warning("%s: " fmt, SQN_MODULE_NAME, ##arg) #define sqn_pr_err(fmt, arg...) \ pr_err("%s: " fmt, SQN_MODULE_NAME, ##arg) #define sqn_pr_info_dump(prefix, data, len) \ do { \ unsigned int i = 0; \ unsigned int width = 16; \ unsigned int len_ = (unsigned int)(len); \ while (i < len_) { \ if (i % width == 0) \ printk(KERN_INFO "%s: %s: %04x ", \ SQN_MODULE_NAME, (prefix), i); \ printk("%02x ", ((unsigned char *)(data))[i++]);\ if ((i % width == 0) || (i == len_)) \ printk("\n"); \ } \ } while (0) #endif /* _SQN_MSG_H */