xpp: Remove obsolete and unused OLD_PROC code

OLD_PROC marked old and unused code that was used for writing to procfs.
It has long ago been replaced with different sysfs interfaces. Time
to remove it.

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9916 a0bf4364-ded3-4de4-8d8a-66a801d63aff
This commit is contained in:
Tzafrir Cohen
2011-05-23 13:37:40 +00:00
parent 9146433e6d
commit bbb34d7f29
9 changed files with 1 additions and 658 deletions

View File

@@ -3,7 +3,7 @@ EXTRA_CFLAGS = $(XPP_LOCAL_CFLAGS) \
-DPOLL_DIGITAL_INPUTS \
-DDEBUG_PCMTX \
-DPROTOCOL_DEBUG \
-g # -DOLD_PROC
-g
#
WITH_BRISTUFF := $(shell grep -c '^[[:space:]]*\#[[:space:]]*define[[:space:]]\+CONFIG_DAHDI_BRI_DCHANS\>' $(src)/../../../include/dahdi/dahdi_config.h)

View File

@@ -40,59 +40,6 @@ extern int debug;
/*---------------- GLOBAL PROC handling -----------------------------------*/
#ifdef OLD_PROC
static int proc_xpd_register_read(char *page, char **start, off_t off, int count, int *eof, void *data)
{
int len = 0;
unsigned long flags;
xpd_t *xpd = data;
reg_cmd_t *info;
bool do_datah;
char datah_str[50];
if(!xpd)
return -ENODEV;
XPD_NOTICE(xpd, "%s: DEPRECATED: %s[%d] read from /proc interface instead of /sys\n",
__FUNCTION__, current->comm, current->tgid);
spin_lock_irqsave(&xpd->lock, flags);
info = &xpd->last_reply;
len += sprintf(page + len, "# Writing bad data into this file may damage your hardware!\n");
len += sprintf(page + len, "# Consult firmware docs first\n");
len += sprintf(page + len, "#\n");
do_datah = REG_FIELD(info, do_datah) ? 1 : 0;
if(do_datah) {
snprintf(datah_str, ARRAY_SIZE(datah_str), "\t%02X",
REG_FIELD(info, data_high));
} else
datah_str[0] = '\0';
if(REG_FIELD(info, do_subreg)) {
len += sprintf(page + len, "#CH\tOP\tReg.\tSub\tDL%s\n",
(do_datah) ? "\tDH" : "");
len += sprintf(page + len, "%2d\tRS\t%02X\t%02X\t%02X%s\n",
info->portnum,
REG_FIELD(info, regnum), REG_FIELD(info, subreg),
REG_FIELD(info, data_low), datah_str);
} else {
len += sprintf(page + len, "#CH\tOP\tReg.\tDL%s\n",
(do_datah) ? "\tDH" : "");
len += sprintf(page + len, "%2d\tRD\t%02X\t%02X%s\n",
info->portnum,
REG_FIELD(info, regnum),
REG_FIELD(info, data_low), datah_str);
}
spin_unlock_irqrestore(&xpd->lock, flags);
if (len <= off+count)
*eof = 1;
*start = page + off;
len -= off;
if (len > count)
len = count;
if (len < 0)
len = 0;
return len;
}
#endif
static int parse_hexbyte(const char *buf)
{
char *endp;
@@ -342,78 +289,6 @@ out:
return ret;
}
#ifdef OLD_PROC
static int proc_xpd_register_write(struct file *file, const char __user *buffer, unsigned long count, void *data)
{
xpd_t *xpd = data;
char buf[MAX_PROC_WRITE];
char *p;
int i;
int ret;
if(!xpd)
return -ENODEV;
XPD_NOTICE(xpd, "%s: DEPRECATED: %s[%d] wrote to /proc interface instead of /sys\n",
__FUNCTION__, current->comm, current->tgid);
for(i = 0; i < count; /* noop */) {
for(p = buf; p < buf + MAX_PROC_WRITE; p++) { /* read a line */
if(i >= count)
break;
if(get_user(*p, buffer + i))
return -EFAULT;
i++;
if(*p == '\n' || *p == '\r') /* whatever */
break;
}
if(p >= buf + MAX_PROC_WRITE)
return -E2BIG;
*p = '\0';
ret = parse_chip_command(xpd, buf);
if(ret < 0) {
XPD_NOTICE(xpd, "Failed writing command: '%s'\n", buf);
return ret;
}
/* Don't flood command_queue */
if(xframe_queue_count(&xpd->xbus->command_queue) > 5)
msleep(6);
}
return count;
}
void chip_proc_remove(xbus_t *xbus, xpd_t *xpd)
{
BUG_ON(!xpd);
#ifdef CONFIG_PROC_FS
if(xpd->proc_xpd_chipregs) {
XBUS_DBG(PROC, xbus, "UNIT %d: Removing %s\n", xpd->addr.unit, CHIP_REGISTERS);
xpd->proc_xpd_chipregs->data = NULL;
remove_proc_entry(CHIP_REGISTERS, xpd->proc_xpd_dir);
}
#endif
}
int chip_proc_create(xbus_t *xbus, xpd_t *xpd)
{
BUG_ON(!xpd);
#ifdef CONFIG_PROC_FS
XBUS_DBG(PROC, xbus, "UNIT %d: Creating %s\n", xpd->addr.unit, CHIP_REGISTERS);
xpd->proc_xpd_chipregs = create_proc_entry(CHIP_REGISTERS, 0644, xpd->proc_xpd_dir);
if(!xpd->proc_xpd_chipregs) {
XPD_ERR(xpd, "Failed to create proc file '%s'\n", CHIP_REGISTERS);
goto err;
}
SET_PROC_DIRENTRY_OWNER(xpd->proc_xpd_chipregs);
xpd->proc_xpd_chipregs->write_proc = proc_xpd_register_write;
xpd->proc_xpd_chipregs->read_proc = proc_xpd_register_read;
xpd->proc_xpd_chipregs->data = xpd;
#endif
return 0;
err:
chip_proc_remove(xbus, xpd);
return -EINVAL;
}
#endif
/*---------------- GLOBAL Protocol Commands -------------------------------*/
static bool global_packet_is_valid(xpacket_t *pack);

View File

@@ -100,10 +100,6 @@ DEF_RPACKET_DATA(GLOBAL, ERROR_CODE,
/* 0x19 */ DECLARE_CMD(GLOBAL, SYNC_SOURCE, enum sync_mode mode, int drift);
/* 0x23 */ DECLARE_CMD(GLOBAL, RESET_SYNC_COUNTERS);
#ifdef OLD_PROC
void chip_proc_remove(xbus_t *xbus, xpd_t *xpd);
int chip_proc_create(xbus_t *xbus, xpd_t *xpd);
#endif
int xpp_register_request(xbus_t *xbus, xpd_t *xpd, xportno_t portno,
bool writing, byte regnum, bool do_subreg, byte subreg,
byte data_low, bool do_datah, byte data_high, bool should_reply);

View File

@@ -75,10 +75,6 @@ static bool is_sigtype_dchan(int sigtype)
static bool pri_packet_is_valid(xpacket_t *pack);
static void pri_packet_dump(const char *msg, xpacket_t *pack);
#ifdef OLD_PROC
static int proc_pri_info_read(char *page, char **start, off_t off, int count, int *eof, void *data);
static int proc_pri_info_write(struct file *file, const char __user *buffer, unsigned long count, void *data);
#endif
static int pri_startup(struct dahdi_span *span);
static int pri_shutdown(struct dahdi_span *span);
static int pri_rbsbits(struct dahdi_chan *chan, int bits);
@@ -86,9 +82,6 @@ static int pri_lineconfig(xpd_t *xpd, int lineconfig);
static void send_idlebits(xpd_t *xpd, bool saveold);
#define PROC_REGISTER_FNAME "slics"
#ifdef OLD_PROC
#define PROC_PRI_INFO_FNAME "pri_info"
#endif
enum pri_protocol {
PRI_PROTO_0 = 0,
@@ -314,9 +307,6 @@ struct pri_leds {
struct PRI_priv_data {
bool clock_source;
#ifdef OLD_PROC
struct proc_dir_entry *pri_info;
#endif
enum pri_protocol pri_protocol;
xpp_line_t rbslines;
int deflaw;
@@ -494,50 +484,6 @@ static int write_cas_reg(xpd_t *xpd, int rsnum, byte val)
return 0;
}
#ifdef OLD_PROC
static void pri_proc_remove(xbus_t *xbus, xpd_t *xpd)
{
struct PRI_priv_data *priv;
BUG_ON(!xpd);
priv = xpd->priv;
XPD_DBG(PROC, xpd, "\n");
#ifdef CONFIG_PROC_FS
if(priv->pri_info) {
XPD_DBG(PROC, xpd, "Removing xpd PRI_INFO file\n");
remove_proc_entry(PROC_PRI_INFO_FNAME, xpd->proc_xpd_dir);
}
#endif
}
#endif
#ifdef OLD_PROC
static int pri_proc_create(xbus_t *xbus, xpd_t *xpd)
{
struct PRI_priv_data *priv;
BUG_ON(!xpd);
priv = xpd->priv;
XPD_DBG(PROC, xpd, "\n");
#ifdef CONFIG_PROC_FS
XPD_DBG(PROC, xpd, "Creating PRI_INFO file\n");
priv->pri_info = create_proc_entry(PROC_PRI_INFO_FNAME, 0644, xpd->proc_xpd_dir);
if(!priv->pri_info) {
XPD_ERR(xpd, "Failed to create proc '%s'\n", PROC_PRI_INFO_FNAME);
goto err;
}
SET_PROC_DIRENTRY_OWNER(priv->pri_info);
priv->pri_info->write_proc = proc_pri_info_write;
priv->pri_info->read_proc = proc_pri_info_read;
priv->pri_info->data = xpd;
#endif
return 0;
err:
pri_proc_remove(xbus, xpd);
return -EINVAL;
}
#endif
static bool valid_pri_modes(const xpd_t *xpd)
{
struct PRI_priv_data *priv;
@@ -1189,12 +1135,6 @@ static xpd_t *PRI_card_new(xbus_t *xbus, int unit, int subunit, const xproto_tab
priv->pri_protocol = PRI_PROTO_0; /* Default, changes in set_pri_proto() */
priv->deflaw = DAHDI_LAW_DEFAULT; /* Default, changes in set_pri_proto() */
xpd->type_name = type_name(priv->pri_protocol);
#ifdef OLD_PROC
if(pri_proc_create(xbus, xpd) < 0) {
xpd_free(xpd);
return NULL;
}
#endif
xbus->sync_mode_default = SYNC_MODE_AB;
return xpd;
}
@@ -1241,9 +1181,6 @@ static int PRI_card_init(xbus_t *xbus, xpd_t *xpd)
priv->initialized = 1;
return 0;
err:
#ifdef OLD_PROC
pri_proc_remove(xbus, xpd);
#endif
XPD_ERR(xpd, "Failed initializing registers (%d)\n", ret);
return ret;
}
@@ -1255,9 +1192,6 @@ static int PRI_card_remove(xbus_t *xbus, xpd_t *xpd)
BUG_ON(!xpd);
priv = xpd->priv;
XPD_DBG(GENERAL, xpd, "\n");
#ifdef OLD_PROC
pri_proc_remove(xbus, xpd);
#endif
return 0;
}
@@ -2218,154 +2152,6 @@ static void pri_packet_dump(const char *msg, xpacket_t *pack)
DBG(GENERAL, "%s\n", msg);
}
/*------------------------- REGISTER Handling --------------------------*/
#ifdef OLD_PROC
static int proc_pri_info_write(struct file *file, const char __user *buffer, unsigned long count, void *data)
{
xpd_t *xpd = data;
struct PRI_priv_data *priv;
char buf[MAX_PROC_WRITE];
char *p;
char *tok;
int ret = 0;
bool got_localloop = 0;
bool got_nolocalloop = 0;
bool got_e1 = 0;
bool got_t1 = 0;
bool got_j1 = 0;
if(!xpd)
return -ENODEV;
XPD_NOTICE(xpd, "%s: DEPRECATED: %s[%d] write to /proc interface instead of /sys\n",
__FUNCTION__, current->comm, current->tgid);
priv = xpd->priv;
if(count >= MAX_PROC_WRITE) { /* leave room for null */
XPD_ERR(xpd, "write too long (%ld)\n", count);
return -E2BIG;
}
if(copy_from_user(buf, buffer, count)) {
XPD_ERR(xpd, "Failed reading user data\n");
return -EFAULT;
}
buf[count] = '\0';
XPD_DBG(PROC, xpd, "PRI-SETUP: got %s\n", buf);
/*
* First parse. Act only of *everything* is good.
*/
p = buf;
while((tok = strsep(&p, " \t\v\n")) != NULL) {
if(*tok == '\0')
continue;
XPD_DBG(PROC, xpd, "Got token='%s'\n", tok);
if(strnicmp(tok, "LOCALLOOP", 8) == 0)
got_localloop = 1;
else if(strnicmp(tok, "NOLOCALLOOP", 8) == 0)
got_nolocalloop = 1;
else if(strnicmp(tok, "E1", 2) == 0)
got_e1 = 1;
else if(strnicmp(tok, "T1", 2) == 0)
got_t1 = 1;
else if(strnicmp(tok, "J1", 2) == 0) {
got_j1 = 1;
} else {
XPD_NOTICE(xpd, "PRI-SETUP: unknown keyword: '%s'\n", tok);
return -EINVAL;
}
}
if(got_e1)
ret = set_pri_proto(xpd, PRI_PROTO_E1);
else if(got_t1)
ret = set_pri_proto(xpd, PRI_PROTO_T1);
else if(got_j1)
ret = set_pri_proto(xpd, PRI_PROTO_J1);
if(priv->pri_protocol == PRI_PROTO_0) {
XPD_ERR(xpd,
"Must set PRI protocol (E1/T1/J1) before setting other parameters\n");
return -EINVAL;
}
if(got_localloop)
ret = set_localloop(xpd, 1);
if(got_nolocalloop)
ret = set_localloop(xpd, 0);
return (ret) ? ret : count;
}
static int proc_pri_info_read(char *page, char **start, off_t off, int count, int *eof, void *data)
{
int len = 0;
unsigned long flags;
xpd_t *xpd = data;
struct PRI_priv_data *priv;
int i;
DBG(PROC, "\n");
if(!xpd)
return -ENODEV;
XPD_NOTICE(xpd, "%s: DEPRECATED: %s[%d] read from /proc interface instead of /sys\n",
__FUNCTION__, current->comm, current->tgid);
spin_lock_irqsave(&xpd->lock, flags);
priv = xpd->priv;
BUG_ON(!priv);
len += sprintf(page + len, "PRI: %s %s%s (deflaw=%d, dchan=%d)\n",
(priv->clock_source) ? "MASTER" : "SLAVE",
pri_protocol_name(priv->pri_protocol),
(priv->local_loopback) ? " LOCALLOOP" : "",
priv->deflaw, priv->dchan_num);
len += sprintf(page + len, "%05d Layer1: ", priv->layer1_replies);
if(priv->poll_noreplies > 1)
len += sprintf(page + len, "No Replies [%d]\n",
priv->poll_noreplies);
else {
len += sprintf(page + len, "%s\n",
((priv->layer1_up) ? "UP" : "DOWN"));
len += sprintf(page + len,
"Framer Status: FRS0=0x%02X, FRS1=0x%02X ALARMS:",
priv->reg_frs0, priv->reg_frs1);
if(priv->reg_frs0 & REG_FRS0_LOS)
len += sprintf(page + len, " RED");
if(priv->reg_frs0 & REG_FRS0_AIS)
len += sprintf(page + len, " BLUE");
if(priv->reg_frs0 & REG_FRS0_RRA)
len += sprintf(page + len, " YELLOW");
len += sprintf(page + len, "\n");
}
if(priv->is_cas) {
len += sprintf(page + len,
"CAS: replies=%d\n", priv->cas_replies);
len += sprintf(page + len, " CAS-TS: ");
for(i = 0; i < NUM_CAS_RS_E; i++) {
len += sprintf(page + len, " %02X", priv->cas_ts_e[i]);
}
len += sprintf(page + len, "\n");
len += sprintf(page + len, " CAS-RS: ");
for(i = 0; i < NUM_CAS_RS_E; i++) {
len += sprintf(page + len, " %02X", priv->cas_rs_e[i]);
}
len += sprintf(page + len, "\n");
}
len += sprintf(page + len, "D-Channel: TX=[%5d] (0x%02X) RX=[%5d] (0x%02X) ",
priv->dchan_tx_counter, priv->dchan_tx_sample,
priv->dchan_rx_counter, priv->dchan_rx_sample);
if(priv->dchan_alive) {
len += sprintf(page + len, "(alive %d K-ticks)\n",
priv->dchan_alive_ticks/1000);
} else {
len += sprintf(page + len, "(dead)\n");
}
for(i = 0; i < NUM_LEDS; i++)
len += sprintf(page + len, "LED #%d: %d\n", i, priv->ledstate[i]);
spin_unlock_irqrestore(&xpd->lock, flags);
if (len <= off+count)
*eof = 1;
*start = page + off;
len -= off;
if (len > count)
len = count;
if (len < 0)
len = 0;
return len;
}
#endif
/*------------------------- sysfs stuff --------------------------------*/
static DEVICE_ATTR_READER(pri_protocol_show, dev, buf)

View File

@@ -51,9 +51,6 @@ static const char rcsid[] = "$Id$";
#define INITIALIZATION_TIMEOUT (90*HZ) /* in jiffies */
#define PROC_XBUSES "xbuses"
#define PROC_XBUS_SUMMARY "summary"
#ifdef OLD_PROC
#define PROC_XBUS_WAITFOR_XPDS "waitfor_xpds"
#endif
#ifdef PROTOCOL_DEBUG
#ifdef CONFIG_PROC_FS
@@ -70,9 +67,6 @@ static DEF_PARM_BOOL(rx_tasklet, 0, 0644, "Use receive tasklets");
#ifdef CONFIG_PROC_FS
static int xbus_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data);
#ifdef OLD_PROC
static int xbus_read_waitfor_xpds(char *page, char **start, off_t off, int count, int *eof, void *data);
#endif
#endif
static void transport_init(xbus_t *xbus, struct xbus_ops *ops, ushort max_send_size, struct device *transport_device, void *priv);
static void transport_destroy(xbus_t *xbus);
@@ -1131,16 +1125,6 @@ static void worker_destroy(xbus_t *xbus)
worker->wq = NULL;
XBUS_DBG(DEVICES, xbus, "destroying workqueue -- done\n");
}
#ifdef CONFIG_PROC_FS
#ifdef OLD_PROC
if (xbus->proc_xbus_dir && worker->proc_xbus_waitfor_xpds) {
XBUS_DBG(PROC, xbus, "Removing proc '%s'\n",
PROC_XBUS_WAITFOR_XPDS);
remove_proc_entry(PROC_XBUS_WAITFOR_XPDS, xbus->proc_xbus_dir);
worker->proc_xbus_waitfor_xpds = NULL;
}
#endif
#endif
XBUS_DBG(DEVICES, xbus, "detach worker\n");
put_xbus(__func__, xbus); /* got from worker_run() */
}
@@ -1176,22 +1160,6 @@ static int worker_run(xbus_t *xbus)
BUG_ON(worker->wq); /* Hmmm... nested workers? */
XBUS_DBG(DEVICES, xbus, "\n");
/* poll related variables */
#ifdef CONFIG_PROC_FS
#ifdef OLD_PROC
if(xbus->proc_xbus_dir) {
worker->proc_xbus_waitfor_xpds = create_proc_read_entry(
PROC_XBUS_WAITFOR_XPDS, 0444,
xbus->proc_xbus_dir,
xbus_read_waitfor_xpds,
xbus);
if (!worker->proc_xbus_waitfor_xpds) {
XBUS_ERR(xbus, "Failed to create proc file '%s'\n", PROC_XBUS_WAITFOR_XPDS);
goto err;
}
SET_PROC_DIRENTRY_OWNER(worker->proc_xbus_waitfor_xpds);
}
#endif
#endif
worker->wq = create_singlethread_workqueue(xbus->busname);
if(!worker->wq) {
XBUS_ERR(xbus, "Failed to create worker workqueue.\n");
@@ -1730,35 +1698,6 @@ out:
}
#ifdef OLD_PROC
static int xbus_read_waitfor_xpds(char *page, char **start, off_t off, int count, int *eof, void *data)
{
int len = 0;
int i = (int)((unsigned long)data);
xbus_t *xbus;
xbus = get_xbus(__func__, i);
if (xbus != NULL) {
XBUS_NOTICE(xbus, "%s: DEPRECATED: %s[%d] read from /proc interface instead of /sys\n",
__func__, current->comm, current->tgid);
/* first handle special cases */
if (count && !off)
len = waitfor_xpds(xbus, page);
put_xbus(__func__, xbus);
}
if (len <= off+count)
*eof = 1;
*start = page + off;
len -= off;
if (len > count)
len = count;
if (len < 0)
len = 0;
return len;
}
#endif
#ifdef PROTOCOL_DEBUG
static int proc_xbus_command_write(struct file *file, const char __user *buffer, unsigned long count, void *data)
{

View File

@@ -135,11 +135,6 @@ struct xbus_workqueue {
int num_units;
int num_units_initialized;
wait_queue_head_t wait_for_xpd_initialization;
#ifdef CONFIG_PROC_FS
#ifdef OLD_PROC
struct proc_dir_entry *proc_xbus_waitfor_xpds;
#endif
#endif
spinlock_t worker_lock;
struct semaphore running_initialization;
};

View File

@@ -1219,73 +1219,6 @@ int fill_sync_string(char *buf, size_t count)
return len;
}
#ifdef OLD_PROC
#ifdef CONFIG_PROC_FS
static int proc_sync_read(char *page, char **start, off_t off, int count, int *eof, void *data)
{
int len = 0;
struct timeval now;
unsigned int counter = atomic_read(&xpp_tick_counter);
unsigned long usec;
do_gettimeofday(&now);
NOTICE("%s: DEPRECATED: %s[%d] read from /proc interface instead of /sys\n",
__FUNCTION__, current->comm, current->tgid);
len += sprintf(page + len, "# To modify sync source write into this file:\n");
len += sprintf(page + len, "# DAHDI - Another dahdi device provide sync\n");
len += sprintf(page + len, "# SYNC=nn - XBUS-nn provide sync\n");
len += sprintf(page + len, "# QUERY=nn - Query XBUS-nn for sync information (DEBUG)\n");
len += fill_sync_string(page + len, PAGE_SIZE - len);
#ifdef DAHDI_SYNC_TICK
if(force_dahdi_sync) {
len += sprintf(page + len,
"Dahdi Reference Sync (%d registered spans):\n",
total_registered_spans());
len += sprintf(page + len, "\tdahdi_tick: #%d\n", dahdi_tick_count);
len += sprintf(page + len, "\ttick - dahdi_tick = %d\n",
counter - dahdi_tick_count);
} else {
len += sprintf(page + len,
"Dahdi Reference Sync Not activated\n");
}
#endif
usec = usec_diff(&now, &global_ticks_series.last_sample.tv);
len += sprintf(page + len, "\ntick: #%d\n", counter);
len += sprintf(page + len,
"tick duration: %d usec (measured %ld.%ld msec ago)\n",
global_ticks_series.tick_period,
usec / 1000, usec % 1000);
if (len <= off+count)
*eof = 1;
*start = page + off;
len -= off;
if (len > count)
len = count;
if (len < 0)
len = 0;
return len;
}
static int proc_sync_write(struct file *file, const char __user *buffer, unsigned long count, void *data)
{
char buf[MAX_PROC_WRITE];
// DBG(SYNC, "%s: count=%ld\n", __FUNCTION__, count);
NOTICE("%s: DEPRECATED: %s[%d] write to /proc interface instead of /sys\n",
__FUNCTION__, current->comm, current->tgid);
if(count >= MAX_PROC_WRITE)
return -EINVAL;
if(copy_from_user(buf, buffer, count))
return -EFAULT;
buf[count] = '\0';
return exec_sync_command(buf, count);
}
static struct proc_dir_entry *top;
#endif
#endif /* OLD_PROC */
int xbus_pcm_init(void *toplevel)
{
int ret = 0;
@@ -1301,34 +1234,11 @@ int xbus_pcm_init(void *toplevel)
#endif
xpp_ticker_init(&global_ticks_series);
xpp_ticker_init(&dahdi_ticker);
#ifdef OLD_PROC
#ifdef CONFIG_PROC_FS
{
struct proc_dir_entry *ent;
top = toplevel;
ent = create_proc_entry(PROC_SYNC, 0644, top);
if(ent) {
ent->read_proc = proc_sync_read;
ent->write_proc = proc_sync_write;
ent->data = NULL;
} else {
ret = -EFAULT;
}
}
#endif
#endif /* OLD_PROC */
return ret;
}
void xbus_pcm_shutdown(void)
{
#ifdef OLD_PROC
#ifdef CONFIG_PROC_FS
DBG(GENERAL, "Removing '%s' from proc\n", PROC_SYNC);
remove_proc_entry(PROC_SYNC, top);
#endif
#endif /* OLD_PROC */
}

View File

@@ -216,11 +216,6 @@ struct xpd {
#ifdef CONFIG_PROC_FS
struct proc_dir_entry *proc_xpd_dir;
struct proc_dir_entry *proc_xpd_summary;
#ifdef OLD_PROC
struct proc_dir_entry *proc_xpd_ztregister;
struct proc_dir_entry *proc_xpd_blink;
struct proc_dir_entry *proc_xpd_chipregs;
#endif
#endif
int counters[XPD_COUNTER_MAX];

View File

@@ -50,10 +50,6 @@ static const char rcsid[] = "$Id$";
#ifdef CONFIG_PROC_FS
struct proc_dir_entry *xpp_proc_toplevel = NULL;
#define PROC_DIR "xpp"
#ifdef OLD_PROC
#define PROC_XPD_ZTREGISTER "dahdi_registration"
#define PROC_XPD_BLINK "blink"
#endif
#define PROC_XPD_SUMMARY "summary"
#endif
@@ -114,12 +110,6 @@ int total_registered_spans(void)
#ifdef CONFIG_PROC_FS
static int xpd_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data);
#ifdef OLD_PROC
static int proc_xpd_ztregister_read(char *page, char **start, off_t off, int count, int *eof, void *data);
static int proc_xpd_ztregister_write(struct file *file, const char __user *buffer, unsigned long count, void *data);
static int proc_xpd_blink_read(char *page, char **start, off_t off, int count, int *eof, void *data);
static int proc_xpd_blink_write(struct file *file, const char __user *buffer, unsigned long count, void *data);
#endif
#endif
/*------------------------- XPD Management -------------------------*/
@@ -162,26 +152,11 @@ static void xpd_proc_remove(xbus_t *xbus, xpd_t *xpd)
{
#ifdef CONFIG_PROC_FS
if(xpd->proc_xpd_dir) {
#ifdef OLD_PROC
chip_proc_remove(xbus, xpd);
#endif
if(xpd->proc_xpd_summary) {
XPD_DBG(PROC, xpd, "Removing proc '%s'\n", PROC_XPD_SUMMARY);
remove_proc_entry(PROC_XPD_SUMMARY, xpd->proc_xpd_dir);
xpd->proc_xpd_summary = NULL;
}
#ifdef OLD_PROC
if(xpd->proc_xpd_ztregister) {
XPD_DBG(PROC, xpd, "Removing proc '%s'\n", PROC_XPD_ZTREGISTER);
remove_proc_entry(PROC_XPD_ZTREGISTER, xpd->proc_xpd_dir);
xpd->proc_xpd_ztregister = NULL;
}
if(xpd->proc_xpd_blink) {
XPD_DBG(PROC, xpd, "Removing proc '%s'\n", PROC_XPD_BLINK);
remove_proc_entry(PROC_XPD_BLINK, xpd->proc_xpd_dir);
xpd->proc_xpd_blink = NULL;
}
#endif
XPD_DBG(PROC, xpd, "Removing %s/%s proc directory\n",
xbus->busname, xpd->xpdname);
remove_proc_entry(xpd->xpdname, xbus->proc_xbus_dir);
@@ -206,28 +181,6 @@ static int xpd_proc_create(xbus_t *xbus, xpd_t *xpd)
goto err;
}
SET_PROC_DIRENTRY_OWNER(xpd->proc_xpd_summary);
#ifdef OLD_PROC
xpd->proc_xpd_ztregister = create_proc_entry(PROC_XPD_ZTREGISTER, 0644, xpd->proc_xpd_dir);
if (!xpd->proc_xpd_ztregister) {
XPD_ERR(xpd, "Failed to create proc file '%s'\n", PROC_XPD_ZTREGISTER);
goto err;
}
SET_PROC_DIRENTRY_OWNER(xpd->proc_xpd_ztregister);
xpd->proc_xpd_ztregister->data = xpd;
xpd->proc_xpd_ztregister->read_proc = proc_xpd_ztregister_read;
xpd->proc_xpd_ztregister->write_proc = proc_xpd_ztregister_write;
xpd->proc_xpd_blink = create_proc_entry(PROC_XPD_BLINK, 0644, xpd->proc_xpd_dir);
if (!xpd->proc_xpd_blink) {
XPD_ERR(xpd, "Failed to create proc file '%s'\n", PROC_XPD_BLINK);
goto err;
}
SET_PROC_DIRENTRY_OWNER(xpd->proc_xpd_blink);
xpd->proc_xpd_blink->data = xpd;
xpd->proc_xpd_blink->read_proc = proc_xpd_blink_read;
xpd->proc_xpd_blink->write_proc = proc_xpd_blink_write;
if(chip_proc_create(xbus, xpd) < 0)
goto err;
#endif
#endif
return 0;
#ifdef CONFIG_PROC_FS
@@ -756,112 +709,6 @@ void hookstate_changed(xpd_t *xpd, int pos, bool to_offhook)
notify_rxsig(xpd, pos, (to_offhook) ? DAHDI_RXSIG_OFFHOOK : DAHDI_RXSIG_ONHOOK);
}
#ifdef CONFIG_PROC_FS
#ifdef OLD_PROC
static int proc_xpd_ztregister_read(char *page, char **start, off_t off, int count, int *eof, void *data)
{
int len = 0;
unsigned long flags;
xpd_t *xpd = data;
BUG_ON(!xpd);
XPD_NOTICE(xpd, "%s: DEPRECATED: %s[%d] read from /proc interface instead of /sys\n",
__FUNCTION__, current->comm, current->tgid);
spin_lock_irqsave(&xpd->lock, flags);
len += sprintf(page + len, "%d\n", SPAN_REGISTERED(xpd) ? xpd->span.spanno : 0);
spin_unlock_irqrestore(&xpd->lock, flags);
if (len <= off+count)
*eof = 1;
*start = page + off;
len -= off;
if (len > count)
len = count;
if (len < 0)
len = 0;
return len;
}
static int proc_xpd_ztregister_write(struct file *file, const char __user *buffer, unsigned long count, void *data)
{
xpd_t *xpd = data;
char buf[MAX_PROC_WRITE];
int dahdi_reg;
int ret;
BUG_ON(!xpd);
XPD_NOTICE(xpd, "%s: DEPRECATED: %s[%d] wrote to /proc interface instead of /sys\n",
__FUNCTION__, current->comm, current->tgid);
if(count >= MAX_PROC_WRITE)
return -EINVAL;
if(copy_from_user(buf, buffer, count))
return -EFAULT;
buf[count] = '\0';
ret = sscanf(buf, "%d", &dahdi_reg);
if(ret != 1)
return -EINVAL;
if(!XBUS_IS(xpd->xbus, READY))
return -ENODEV;
XPD_DBG(GENERAL, xpd, "%s\n", (dahdi_reg) ? "register" : "unregister");
if(dahdi_reg)
ret = dahdi_register_xpd(xpd);
else
ret = dahdi_unregister_xpd(xpd);
return (ret < 0) ? ret : count;
}
static int proc_xpd_blink_read(char *page, char **start, off_t off, int count, int *eof, void *data)
{
int len = 0;
unsigned long flags;
xpd_t *xpd = data;
BUG_ON(!xpd);
XPD_NOTICE(xpd, "%s: DEPRECATED: %s[%d] read from /proc interface instead of /sys\n",
__FUNCTION__, current->comm, current->tgid);
spin_lock_irqsave(&xpd->lock, flags);
len += sprintf(page + len, "0x%lX\n", xpd->blink_mode);
spin_unlock_irqrestore(&xpd->lock, flags);
if (len <= off+count)
*eof = 1;
*start = page + off;
len -= off;
if (len > count)
len = count;
if (len < 0)
len = 0;
return len;
}
static int proc_xpd_blink_write(struct file *file, const char __user *buffer, unsigned long count, void *data)
{
xpd_t *xpd = data;
char buf[MAX_PROC_WRITE];
char *endp;
unsigned long blink;
BUG_ON(!xpd);
XPD_NOTICE(xpd, "%s: DEPRECATED: %s[%d] wrote to /proc interface instead of /sys\n",
__FUNCTION__, current->comm, current->tgid);
if(count >= MAX_PROC_WRITE)
return -EINVAL;
if(copy_from_user(buf, buffer, count))
return -EFAULT;
buf[count] = '\0';
if(count > 0 && buf[count-1] == '\n') /* chomp */
buf[count-1] = '\0';
blink = simple_strtoul(buf, &endp, 0);
if(*endp != '\0' || blink > 0xFFFF)
return -EINVAL;
XPD_DBG(GENERAL, xpd, "BLINK channels: 0x%lX\n", blink);
xpd->blink_mode = blink;
return count;
}
#endif
#endif
#define XPP_MAX_LEN 512
/*------------------------- Dahdi Interfaces -----------------------*/