2010-08-27 11:19:57 +02:00

120 lines
2.9 KiB
C

/*
* This is part of the Sequans SQN1130 driver.
* Copyright 2008 SEQUANS Communications
* Written by Andy Shevchenko <andy@smile.org.ua>,
* Dmitriy Chumak <chumakd@gmail.com>
*
* 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 <linux/kernel.h>
#include <linux/sched.h>
#include <linux/string.h>
#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 */