xpp: Remove obsolete XPP_DEBUGFS code

XPP_DEBUGFS code was some code used to send BRI D-Channel data
through debugfs for, well, debugging. Unused in recent years.
Time to remove.

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9917 a0bf4364-ded3-4de4-8d8a-66a801d63aff
This commit is contained in:
Tzafrir Cohen 2011-05-23 13:38:16 +00:00
parent bbb34d7f29
commit 155cb5a0b1
6 changed files with 0 additions and 277 deletions

View File

@ -563,9 +563,6 @@ static int rx_dchan(xpd_t *xpd, reg_cmd_t *regcmd)
priv = xpd->priv;
BUG_ON(!priv);
xbus = xpd->xbus;
#ifdef XPP_DEBUGFS
xbus_log(xbus, xpd, 0, regcmd, sizeof(reg_cmd_t)); /* 0 = RX */
#endif
dchan = XPD_CHAN(xpd, 2);
if(!IS_OFFHOOK(xpd, 2)) { /* D-chan is used? */
static int rate_limit;
@ -640,9 +637,6 @@ static int rx_dchan(xpd_t *xpd, reg_cmd_t *regcmd)
priv = xpd->priv;
BUG_ON(!priv);
xbus = xpd->xbus;
#ifdef XPP_DEBUGFS
xbus_log(xbus, xpd, 0, regcmd, sizeof(reg_cmd_t)); /* 0 = RX */
#endif
dchan = XPD_CHAN(xpd, 2);
if(!IS_OFFHOOK(xpd, 2)) { /* D-chan is used? */
static int rate_limit;

View File

@ -40,9 +40,6 @@
#include "xpp_dahdi.h"
#include "xbus-core.h"
#include "card_global.h"
#ifdef XPP_DEBUGFS
#include "xpp_log.h"
#endif
#include "dahdi_debug.h"
static const char rcsid[] = "$Id$";
@ -213,155 +210,6 @@ int refcount_xbus(xbus_t *xbus)
return atomic_read(&kref->refcount);
}
/*------------------------- Debugfs Handling -----------------------*/
#ifdef XPP_DEBUGFS
#define DEBUGFS_BUFSIZ 4096 /* must be power of two, otherwise POS_IN_BUF will have to use '%' instead of '&' */
#define POS_IN_BUF(x) ((x) & (DEBUGFS_BUFSIZ-1))
struct debugfs_data {
spinlock_t lock;
xbus_t *xbus;
char buffer[DEBUGFS_BUFSIZ];
unsigned long head, tail; /* reading and writing are performed at position (head % BUF_SIZ) and (tail % BUF_SIZ) */
wait_queue_head_t queue;
};
static unsigned long add_to_buf(struct debugfs_data *d, unsigned long tail, const void *buf, unsigned long len)
{
unsigned long count = min(len, (unsigned long)(DEBUGFS_BUFSIZ - POS_IN_BUF(tail)));
memcpy(d->buffer + POS_IN_BUF(tail), buf, count); /* fill starting at position tail */
memcpy(d->buffer, (u_char *)buf + count, len - count); /* fill leftover */
return len;
}
int xbus_log(xbus_t *xbus, xpd_t *xpd, int direction, const void *buf, unsigned long len)
{
unsigned long tail;
unsigned long flags;
struct debugfs_data *d;
struct log_header header;
int ret = 0;
BUG_ON(!xbus);
BUG_ON(!xpd);
BUG_ON(sizeof(struct log_header) + len > DEBUGFS_BUFSIZ);
d = xbus->debugfs_data;
if (!d) /* no consumer process */
return ret;
spin_lock_irqsave(&d->lock, flags);
if (sizeof(struct log_header) + len > DEBUGFS_BUFSIZ - (d->tail - d->head)) {
ret = -ENOSPC;
XPD_DBG(GENERAL, xpd, "Dropping debugfs data of len %lu, free space is %lu\n", sizeof(struct log_header) + len,
DEBUGFS_BUFSIZ - (d->tail - d->head));
goto out;
}
header.len = sizeof(struct log_header) + len;
header.time = jiffies_to_msecs(jiffies);
header.xpd_num = xpd->xbus_idx;
header.direction = (char)direction;
tail = d->tail;
tail += add_to_buf(d, tail, &header, sizeof(header));
tail += add_to_buf(d, tail, buf, len);
d->tail = tail;
wake_up_interruptible(&d->queue);
out:
spin_unlock_irqrestore(&d->lock, flags);
return ret;
}
static struct dentry *debugfs_root = NULL;
static int debugfs_open(struct inode *inode, struct file *file);
static ssize_t debugfs_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos);
static int debugfs_release(struct inode *inode, struct file *file);
static struct file_operations debugfs_operations = {
.open = debugfs_open,
.read = debugfs_read,
.release = debugfs_release,
};
/*
* As part of the "inode diet" the private data member of struct inode
* has changed in 2.6.19. However, Fedore Core 6 adopted this change
* a bit earlier (2.6.18). If you use such a kernel, Change the
* following test from 2,6,19 to 2,6,18.
*/
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
#define I_PRIVATE(inode) ((inode)->u.generic_ip)
#else
#define I_PRIVATE(inode) ((inode)->i_private)
#endif
static int debugfs_open(struct inode *inode, struct file *file)
{
xbus_t *xbus = I_PRIVATE(inode);
struct debugfs_data *d;
struct log_global_header gheader;
BUG_ON(!xbus);
XBUS_DBG(GENERAL, xbus, "\n");
if (xbus->debugfs_data)
return -EBUSY;
d = KZALLOC(sizeof(struct debugfs_data), GFP_KERNEL);
if (!d)
return -ENOMEM;
try_module_get(THIS_MODULE);
spin_lock_init(&d->lock);
d->xbus = xbus;
d->head = d->tail = 0;
init_waitqueue_head(&d->queue);
file->private_data = d;
gheader.magic = XPP_LOG_MAGIC;
gheader.version = 1;
d->tail += add_to_buf(d, d->tail, &gheader, sizeof(gheader));
xbus->debugfs_data = d;
return 0;
}
static ssize_t debugfs_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos)
{
struct debugfs_data *d = file->private_data;
size_t len;
BUG_ON(!d);
BUG_ON(!d->xbus);
XBUS_DBG(GENERAL, d->xbus, "\n");
while (d->head == d->tail) {
if (wait_event_interruptible(d->queue, d->head != d->tail))
return -EAGAIN;
}
len = min(nbytes, (size_t)(d->tail - d->head));
if (copy_to_user(buf, d->buffer + POS_IN_BUF(d->head), len))
return -EFAULT;
d->head += len;
/* optimization to avoid future buffer wraparound */
if (d->head == d->tail) {
unsigned long flags;
spin_lock_irqsave(&d->lock, flags);
if (d->head == d->tail)
d->head = d->tail = 0;
spin_unlock_irqrestore(&d->lock, flags);
}
return len;
}
static int debugfs_release(struct inode *inode, struct file *file)
{
struct debugfs_data *d = file->private_data;
BUG_ON(!d);
BUG_ON(!d->xbus);
XBUS_DBG(GENERAL, d->xbus, "\n");
d->xbus->debugfs_data = NULL;
KZFREE(d);
module_put(THIS_MODULE);
return 0;
}
#endif
/*------------------------- Frame Handling ------------------------*/
void xframe_init(xbus_t *xbus, xframe_t *xframe, void *buf, size_t maxsize, void *priv)
@ -1381,16 +1229,6 @@ void xbus_free(xbus_t *xbus)
BUG_ON(!xbuses_array[num].xbus);
BUG_ON(xbus != xbuses_array[num].xbus);
spin_unlock_irqrestore(&xbuses_lock, flags);
#ifdef XPP_DEBUGFS
if(xbus->debugfs_dir) {
if(xbus->debugfs_file) {
XBUS_DBG(GENERAL, xbus, "Removing debugfs file\n");
debugfs_remove(xbus->debugfs_file);
}
XBUS_DBG(GENERAL, xbus, "Removing debugfs directory\n");
debugfs_remove(xbus->debugfs_dir);
}
#endif
#ifdef CONFIG_PROC_FS
if(xbus->proc_xbus_dir) {
if(xbus->proc_xbus_summary) {
@ -1485,18 +1323,6 @@ xbus_t *xbus_new(struct xbus_ops *ops, ushort max_send_size, struct device *tran
xbus->proc_xbus_command->data = xbus;
SET_PROC_DIRENTRY_OWNER(xbus->proc_xbus_command);
#endif
#endif
#ifdef XPP_DEBUGFS
xbus->debugfs_dir = debugfs_create_dir(xbus->busname, debugfs_root);
if(!xbus->debugfs_dir) {
XBUS_ERR(xbus, "Failed to create debugfs directory\n");
goto nobus;
}
xbus->debugfs_file = debugfs_create_file("dchannel", S_IFREG|S_IRUGO|S_IWUSR, xbus->debugfs_dir, xbus, &debugfs_operations);
if(!xbus->debugfs_file) {
XBUS_ERR(xbus, "Failed to create dchannel file\n");
goto nobus;
}
#endif
xframe_queue_init(&xbus->command_queue, 10, command_queue_length, "command_queue", xbus);
xframe_queue_init(&xbus->receive_queue, 10, 50, "receive_queue", xbus);
@ -1875,12 +1701,6 @@ void transportops_put(xbus_t *xbus)
static void xbus_core_cleanup(void)
{
finalize_xbuses_array();
#ifdef XPP_DEBUGFS
if(debugfs_root) {
DBG(GENERAL, "Removing xpp from debugfs\n");
debugfs_remove(debugfs_root);
}
#endif
#ifdef CONFIG_PROC_FS
if(proc_xbuses) {
DBG(PROC, "Removing " PROC_XBUSES " from proc\n");
@ -1898,9 +1718,6 @@ int __init xbus_core_init(void)
#ifdef PROTOCOL_DEBUG
INFO("FEATURE: with PROTOCOL_DEBUG\n");
#endif
#ifdef XPP_DEBUGFS
INFO("FEATURE: with XPP_DEBUGFS support\n");
#endif
#ifdef CONFIG_PROC_FS
proc_xbuses = create_proc_read_entry(PROC_XBUSES, 0444, xpp_proc_toplevel, read_proc_xbuses, NULL);
if (!proc_xbuses) {
@ -1909,15 +1726,6 @@ int __init xbus_core_init(void)
goto err;
}
SET_PROC_DIRENTRY_OWNER(proc_xbuses);
#endif
#ifdef XPP_DEBUGFS
DBG(GENERAL, "Creating debugfs xpp root\n");
debugfs_root = debugfs_create_dir("xpp", NULL);
if(!debugfs_root) {
ERR("Failed to create debugfs root\n");
ret = -EFAULT;
goto err;
}
#endif
if((ret = xpp_driver_init()) < 0)
goto err;
@ -1959,6 +1767,3 @@ EXPORT_SYMBOL(xframe_init);
EXPORT_SYMBOL(transportops_get);
EXPORT_SYMBOL(transportops_put);
EXPORT_SYMBOL(xbus_command_queue_tick);
#ifdef XPP_DEBUGFS
EXPORT_SYMBOL(xbus_log);
#endif

View File

@ -34,9 +34,6 @@
/* forward declarations */
struct xbus_workqueue;
#ifdef XPP_DEBUGFS
struct debugfs_data;
#endif
#ifdef __KERNEL__
@ -235,11 +232,6 @@ struct xbus {
atomic_t num_xpds;
#ifdef XPP_DEBUGFS
struct dentry *debugfs_dir;
struct dentry *debugfs_file;
struct debugfs_data *debugfs_data;
#endif
#ifdef CONFIG_PROC_FS
struct proc_dir_entry *proc_xbus_dir;
struct proc_dir_entry *proc_xbus_summary;
@ -279,11 +271,6 @@ void xframe_init(xbus_t *xbus, xframe_t *xframe, void *buf, size_t maxsize, void
int xbus_core_init(void); /* Initializer */
void xbus_core_shutdown(void); /* Terminator */
#ifdef XPP_DEBUGFS
/* Debugfs handling */
int xbus_log(xbus_t *xbus, xpd_t *xpd, int direction, const void *buf, unsigned long len);
#endif
/* Frame handling */
void dump_xframe(const char msg[], const xbus_t *xbus, const xframe_t *xframe, int debug);
int send_cmd_frame(xbus_t *xbus, xframe_t *xframe);

View File

@ -38,9 +38,6 @@
#include "xpd.h"
#include "xpp_dahdi.h"
#include "xbus-core.h"
#ifdef XPP_DEBUGFS
#include "xpp_log.h"
#endif
#include "dahdi_debug.h"
static const char rcsid[] = "$Id$";

View File

@ -37,14 +37,6 @@
#include <asm/semaphore.h>
#endif
#include <linux/moduleparam.h>
#ifdef XPP_DEBUGFS
#ifndef CONFIG_DEBUG_FS
#warning kernel does not include CONFIG_DEBUG_FS, canceling XPP_DEBUGFS support
#undef XPP_DEBUGFS
#else
#include <linux/debugfs.h>
#endif
#endif
#endif /* __KERNEL__ */
#include <dahdi/kernel.h>

View File

@ -1,52 +0,0 @@
#ifndef XPP_LOG_H
#define XPP_LOG_H
/*
* Written by Alexander Landau <landau.alex@gmail.com>
* Copyright (C) 2004-2007, Xorcom
*
* All rights reserved.
*
* 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.
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#ifdef __KERNEL__
#include <linux/kernel.h>
#include <linux/version.h>
#else
/* This is to enable user-space programs to include this. */
#include "xdefs.h"
#endif
#define XPP_LOG_MAGIC 0x10583ADE
struct log_global_header {
__u32 magic;
__u32 version;
} __attribute__((packed));
struct log_header {
__u32 len;
__u32 time;
__u8 xpd_num;
__u8 direction;
} __attribute__((packed));
#endif