[svn-commits] tzafrir: linux/trunk r9628 - /linux/trunk/drivers/dahdi/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sun Jan 16 08:18:24 CST 2011


Author: tzafrir
Date: Sun Jan 16 08:18:18 2011
New Revision: 9628

URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=9628
Log:
Refactor SysFS code to dahdi-sysfs.c

* Refactor SysFS and device-related code to drivers/dahdi/dahdi-sysfs.c .
* Move common headers to drivers/dahdi/dahdi.h .

This commit merely moves existing code and should have no functional
change.

Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
Acked-by: Shaun Ruffell <sruffell at digium.com>
Acked-by: Oron Peled <oron.peled at xorcom.com>

Added:
    linux/trunk/drivers/dahdi/dahdi-sysfs.c   (with props)
    linux/trunk/drivers/dahdi/dahdi.h   (with props)
Modified:
    linux/trunk/drivers/dahdi/Kbuild
    linux/trunk/drivers/dahdi/dahdi-base.c

Modified: linux/trunk/drivers/dahdi/Kbuild
URL: http://svnview.digium.com/svn/dahdi/linux/trunk/drivers/dahdi/Kbuild?view=diff&rev=9628&r1=9627&r2=9628
==============================================================================
--- linux/trunk/drivers/dahdi/Kbuild (original)
+++ linux/trunk/drivers/dahdi/Kbuild Sun Jan 16 08:18:18 2011
@@ -76,7 +76,7 @@
 endif
 endif
 
-dahdi-objs := dahdi-base.o
+dahdi-objs := dahdi-base.o dahdi-sysfs.o
 
 ###############################################################################
 # Find appropriate ARCH value for VPMADT032 and HPEC binary modules

Modified: linux/trunk/drivers/dahdi/dahdi-base.c
URL: http://svnview.digium.com/svn/dahdi/linux/trunk/drivers/dahdi/dahdi-base.c?view=diff&rev=9628&r1=9627&r2=9628
==============================================================================
--- linux/trunk/drivers/dahdi/dahdi-base.c (original)
+++ linux/trunk/drivers/dahdi/dahdi-base.c Sun Jan 16 08:18:18 2011
@@ -65,6 +65,7 @@
 #define FAST_HDLC_NEED_TABLES
 #include <dahdi/kernel.h>
 #include "ecdis.h"
+#include "dahdi.h"
 
 #ifdef CONFIG_DAHDI_PPP
 #include <linux/netdevice.h>
@@ -132,8 +133,6 @@
 EXPORT_SYMBOL(dahdi_hdlc_getbuf);
 EXPORT_SYMBOL(dahdi_hdlc_putbuf);
 EXPORT_SYMBOL(dahdi_alarm_channel);
-EXPORT_SYMBOL(dahdi_register_chardev);
-EXPORT_SYMBOL(dahdi_unregister_chardev);
 
 EXPORT_SYMBOL(dahdi_register_echocan_factory);
 EXPORT_SYMBOL(dahdi_unregister_echocan_factory);
@@ -144,48 +143,9 @@
 static struct proc_dir_entry *root_proc_entry;
 #endif
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
-#define CLASS_DEV_CREATE(class, devt, device, name) \
-	device_create(class, device, devt, NULL, "%s", name)
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
-#define CLASS_DEV_CREATE(class, devt, device, name) \
-	device_create(class, device, devt, name)
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15)
-#define CLASS_DEV_CREATE(class, devt, device, name) \
-        class_device_create(class, NULL, devt, device, name)
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
-#define CLASS_DEV_CREATE(class, devt, device, name) \
-        class_device_create(class, devt, device, name)
-#else
-#define CLASS_DEV_CREATE(class, devt, device, name) \
-        class_simple_device_add(class, devt, device, name)
-#endif
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
-#define CLASS_DEV_DESTROY(class, devt) \
-	device_destroy(class, devt)
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
-#define CLASS_DEV_DESTROY(class, devt) \
-	class_device_destroy(class, devt)
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,9)
-#define CLASS_DEV_DESTROY(class, devt) \
-	class_simple_device_remove(devt)
-#else
-#define CLASS_DEV_DESTROY(class, devt) \
-	class_simple_device_remove(class, devt)
-#endif
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
-static struct class *dahdi_class = NULL;
-#else
-static struct class_simple *dahdi_class = NULL;
-#define class_create class_simple_create
-#define class_destroy class_simple_destroy
-#endif
-
 static int deftaps = 64;
 
-static int debug;
+int debug;
 #define DEBUG_MAIN	(1 << 0)
 #define DEBUG_RBS	(1 << 5)
 
@@ -6445,56 +6405,6 @@
 }
 #endif
 
-static void span_sysfs_remove(struct dahdi_span *span)
-{
-	int x;
-	for (x = 0; x < span->channels; x++) {
-		struct dahdi_chan *chan = span->chans[x];
-		if (!test_bit(DAHDI_FLAGBIT_DEVFILE, &chan->flags))
-			continue;
-
-		CLASS_DEV_DESTROY(dahdi_class,
-				MKDEV(DAHDI_MAJOR, chan->channo));
-		clear_bit(DAHDI_FLAGBIT_DEVFILE, &chan->flags);
-	}
-}
-
-static int span_sysfs_create(struct dahdi_span *span)
-{
-	int res = 0;
-	int x;
-
-	for (x = 0; x < span->channels; x++) {
-		struct dahdi_chan *chan = span->chans[x];
-		char chan_name[32];
-		void *dummy;
-
-		if (chan->channo >= 250)
-			continue;
-		if (test_bit(DAHDI_FLAGBIT_DEVFILE, &chan->flags))
-			continue;
-
-		snprintf(chan_name, sizeof(chan_name), "dahdi!%d",
-				chan->channo);
-		dummy = (void *)CLASS_DEV_CREATE(dahdi_class,
-				MKDEV(DAHDI_MAJOR, chan->channo),
-				NULL, chan_name);
-		if (IS_ERR(dummy)) {
-			res = PTR_ERR(dummy);
-			chan_err(chan, "Failed creating sysfs device: %d\n",
-					res);
-			goto cleanup;
-		}
-
-		set_bit(DAHDI_FLAGBIT_DEVFILE, &chan->flags);
-	}
-	return 0;
-
-cleanup:
-	span_sysfs_remove(span);
-	return res;
-}
-
 /**
  * _get_next_channo - Return the next taken channel number from the span list.
  * @span:	The span with which to start the search.
@@ -9339,30 +9249,6 @@
 
 #endif
 
-int dahdi_register_chardev(struct dahdi_chardev *dev)
-{
-	static const char *DAHDI_STRING = "dahdi!";
-	char *udevname;
-
-	udevname = kzalloc(strlen(dev->name) + sizeof(DAHDI_STRING) + 1,
-			   GFP_KERNEL);
-	if (!udevname)
-		return -ENOMEM;
-
-	strcpy(udevname, DAHDI_STRING);
-	strcat(udevname, dev->name);
-	CLASS_DEV_CREATE(dahdi_class, MKDEV(DAHDI_MAJOR, dev->minor), NULL, udevname);
-	kfree(udevname);
-	return 0;
-}
-
-int dahdi_unregister_chardev(struct dahdi_chardev *dev)
-{
-	CLASS_DEV_DESTROY(dahdi_class, MKDEV(DAHDI_MAJOR, dev->minor));
-
-	return 0;
-}
-
 static const char *hwec_def_name = "HWEC";
 static const char *hwec_get_name(const struct dahdi_chan *chan)
 {
@@ -9387,108 +9273,6 @@
 	.owner = THIS_MODULE,
 	.echocan_create = hwec_echocan_create,
 };
-
-#define MAKE_DAHDI_DEV(num, name) \
-	CLASS_DEV_CREATE(dahdi_class, MKDEV(DAHDI_MAJOR, num), NULL, name)
-#define DEL_DAHDI_DEV(num) \
-	CLASS_DEV_DESTROY(dahdi_class, MKDEV(DAHDI_MAJOR, num))
-
-/* Only used to flag that the device exists: */
-static struct {
-	unsigned int ctl:1;
-	unsigned int timer:1;
-	unsigned int channel:1;
-	unsigned int pseudo:1;
-} dummy_dev;
-
-static void dahdi_sysfs_exit(void)
-{
-	if (dummy_dev.pseudo) {
-		dahdi_dbg(DEVICES, "Removing /dev/dahdi/pseudo:\n");
-		DEL_DAHDI_DEV(DAHDI_PSEUDO);
-		dummy_dev.pseudo = 0;
-	}
-	if (dummy_dev.channel) {
-		dahdi_dbg(DEVICES, "Removing /dev/dahdi/channel:\n");
-		DEL_DAHDI_DEV(DAHDI_CHANNEL);
-		dummy_dev.channel = 0;
-	}
-	if (dummy_dev.timer) {
-		dahdi_dbg(DEVICES, "Removing /dev/dahdi/timer:\n");
-		DEL_DAHDI_DEV(DAHDI_TIMER);
-		dummy_dev.timer = 0;
-	}
-	if (dummy_dev.ctl) {
-		dahdi_dbg(DEVICES, "Removing /dev/dahdi/ctl:\n");
-		DEL_DAHDI_DEV(DAHDI_CTL);
-		dummy_dev.ctl = 0;
-	}
-	if (dahdi_class) {
-		dahdi_dbg(DEVICES, "Destroying DAHDI class:\n");
-		class_destroy(dahdi_class);
-		dahdi_class = NULL;
-	}
-	unregister_chrdev(DAHDI_MAJOR, "dahdi");
-}
-
-static int __init dahdi_sysfs_init(const struct file_operations *dahdi_fops)
-{
-	int res = 0;
-	void *dev;
-
-	res = register_chrdev(DAHDI_MAJOR, "dahdi", dahdi_fops);
-	if (res) {
-		module_printk(KERN_ERR, "Unable to register DAHDI character device handler on %d\n", DAHDI_MAJOR);
-		return res;
-	}
-	module_printk(KERN_INFO, "Telephony Interface Registered on major %d\n",
-			DAHDI_MAJOR);
-	module_printk(KERN_INFO, "Version: %s\n", DAHDI_VERSION);
-
-	dahdi_class = class_create(THIS_MODULE, "dahdi");
-	if (!dahdi_class) {
-		res = -EEXIST;
-		goto cleanup;
-	}
-
-	dahdi_dbg(DEVICES, "Creating /dev/dahdi/timer:\n");
-	dev = MAKE_DAHDI_DEV(DAHDI_TIMER, "dahdi!timer");
-	if (IS_ERR(dev)) {
-		res = PTR_ERR(dev);
-		goto cleanup;
-	}
-	dummy_dev.timer = 1;
-
-	dahdi_dbg(DEVICES, "Creating /dev/dahdi/channel:\n");
-	dev = MAKE_DAHDI_DEV(DAHDI_CHANNEL, "dahdi!channel");
-	if (IS_ERR(dev)) {
-		res = PTR_ERR(dev);
-		goto cleanup;
-	}
-	dummy_dev.channel = 1;
-
-	dahdi_dbg(DEVICES, "Creating /dev/dahdi/pseudo:\n");
-	dev = MAKE_DAHDI_DEV(DAHDI_PSEUDO, "dahdi!pseudo");
-	if (IS_ERR(dev)) {
-		res = PTR_ERR(dev);
-		goto cleanup;
-	}
-	dummy_dev.pseudo = 1;
-
-	dahdi_dbg(DEVICES, "Creating /dev/dahdi/ctl:\n");
-	dev = MAKE_DAHDI_DEV(DAHDI_CTL, "dahdi!ctl");
-	if (IS_ERR(dev)) {
-		res = PTR_ERR(dev);
-		goto cleanup;
-	}
-	dummy_dev.ctl = 1;
-
-	return 0;
-
-cleanup:
-	dahdi_sysfs_exit();
-	return res;
-}
 
 static int __init dahdi_init(void)
 {

Added: linux/trunk/drivers/dahdi/dahdi-sysfs.c
URL: http://svnview.digium.com/svn/dahdi/linux/trunk/drivers/dahdi/dahdi-sysfs.c?view=auto&rev=9628
==============================================================================
--- linux/trunk/drivers/dahdi/dahdi-sysfs.c (added)
+++ linux/trunk/drivers/dahdi/dahdi-sysfs.c Sun Jan 16 08:18:18 2011
@@ -1,0 +1,230 @@
+#include <linux/kernel.h>
+#include <linux/version.h>
+#define DAHDI_PRINK_MACROS_USE_debug
+#include <dahdi/kernel.h>
+#include <linux/device.h>
+#include <dahdi/version.h>
+
+#include "dahdi.h"
+
+/* FIXME: Move to kernel.h */
+#define module_printk(level, fmt, args...) printk(level "%s: " fmt, THIS_MODULE->name, ## args)
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
+#define CLASS_DEV_CREATE(class, devt, device, name) \
+	device_create(class, device, devt, NULL, "%s", name)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+#define CLASS_DEV_CREATE(class, devt, device, name) \
+	device_create(class, device, devt, name)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15)
+#define CLASS_DEV_CREATE(class, devt, device, name) \
+        class_device_create(class, NULL, devt, device, name)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
+#define CLASS_DEV_CREATE(class, devt, device, name) \
+        class_device_create(class, devt, device, name)
+#else
+#define CLASS_DEV_CREATE(class, devt, device, name) \
+        class_simple_device_add(class, devt, device, name)
+#endif
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+#define CLASS_DEV_DESTROY(class, devt) \
+	device_destroy(class, devt)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
+#define CLASS_DEV_DESTROY(class, devt) \
+	class_device_destroy(class, devt)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,9)
+#define CLASS_DEV_DESTROY(class, devt) \
+	class_simple_device_remove(devt)
+#else
+#define CLASS_DEV_DESTROY(class, devt) \
+	class_simple_device_remove(class, devt)
+#endif
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
+static struct class *dahdi_class = NULL;
+#else
+static struct class_simple *dahdi_class = NULL;
+#define class_create class_simple_create
+#define class_destroy class_simple_destroy
+#endif
+
+
+int dahdi_register_chardev(struct dahdi_chardev *dev)
+{
+	static const char *DAHDI_STRING = "dahdi!";
+	char *udevname;
+
+	udevname = kzalloc(strlen(dev->name) + sizeof(DAHDI_STRING) + 1,
+			   GFP_KERNEL);
+	if (!udevname)
+		return -ENOMEM;
+
+	strcpy(udevname, DAHDI_STRING);
+	strcat(udevname, dev->name);
+	CLASS_DEV_CREATE(dahdi_class, MKDEV(DAHDI_MAJOR, dev->minor), NULL, udevname);
+	kfree(udevname);
+	return 0;
+}
+EXPORT_SYMBOL(dahdi_register_chardev);
+
+int dahdi_unregister_chardev(struct dahdi_chardev *dev)
+{
+	CLASS_DEV_DESTROY(dahdi_class, MKDEV(DAHDI_MAJOR, dev->minor));
+
+	return 0;
+}
+EXPORT_SYMBOL(dahdi_unregister_chardev);
+
+void span_sysfs_remove(struct dahdi_span *span)
+{
+	int x;
+	for (x = 0; x < span->channels; x++) {
+		struct dahdi_chan *chan = span->chans[x];
+		if (!test_bit(DAHDI_FLAGBIT_DEVFILE, &chan->flags))
+			continue;
+
+		CLASS_DEV_DESTROY(dahdi_class,
+				MKDEV(DAHDI_MAJOR, chan->channo));
+		clear_bit(DAHDI_FLAGBIT_DEVFILE, &chan->flags);
+	}
+}
+
+int span_sysfs_create(struct dahdi_span *span)
+{
+	int res = 0;
+	int x;
+
+	for (x = 0; x < span->channels; x++) {
+		struct dahdi_chan *chan = span->chans[x];
+		char chan_name[32];
+		void *dummy;
+
+		if (chan->channo >= 250)
+			continue;
+		if (test_bit(DAHDI_FLAGBIT_DEVFILE, &chan->flags))
+			continue;
+
+		snprintf(chan_name, sizeof(chan_name), "dahdi!%d",
+				chan->channo);
+		dummy = (void *)CLASS_DEV_CREATE(dahdi_class,
+				MKDEV(DAHDI_MAJOR, chan->channo),
+				NULL, chan_name);
+		if (IS_ERR(dummy)) {
+			res = PTR_ERR(dummy);
+			chan_err(chan, "Failed creating sysfs device: %d\n",
+					res);
+			goto cleanup;
+		}
+
+		set_bit(DAHDI_FLAGBIT_DEVFILE, &chan->flags);
+	}
+	return 0;
+
+cleanup:
+	span_sysfs_remove(span);
+	return res;
+}
+
+#define MAKE_DAHDI_DEV(num, name) \
+	CLASS_DEV_CREATE(dahdi_class, MKDEV(DAHDI_MAJOR, num), NULL, name)
+#define DEL_DAHDI_DEV(num) \
+	CLASS_DEV_DESTROY(dahdi_class, MKDEV(DAHDI_MAJOR, num))
+
+/* Only used to flag that the device exists: */
+static struct {
+	unsigned int ctl:1;
+	unsigned int timer:1;
+	unsigned int channel:1;
+	unsigned int pseudo:1;
+} dummy_dev;
+
+void dahdi_sysfs_exit(void)
+{
+	if (dummy_dev.pseudo) {
+		dahdi_dbg(DEVICES, "Removing /dev/dahdi/pseudo:\n");
+		DEL_DAHDI_DEV(DAHDI_PSEUDO);
+		dummy_dev.pseudo = 0;
+	}
+	if (dummy_dev.channel) {
+		dahdi_dbg(DEVICES, "Removing /dev/dahdi/channel:\n");
+		DEL_DAHDI_DEV(DAHDI_CHANNEL);
+		dummy_dev.channel = 0;
+	}
+	if (dummy_dev.timer) {
+		dahdi_dbg(DEVICES, "Removing /dev/dahdi/timer:\n");
+		DEL_DAHDI_DEV(DAHDI_TIMER);
+		dummy_dev.timer = 0;
+	}
+	if (dummy_dev.ctl) {
+		dahdi_dbg(DEVICES, "Removing /dev/dahdi/ctl:\n");
+		DEL_DAHDI_DEV(DAHDI_CTL);
+		dummy_dev.ctl = 0;
+	}
+	if (dahdi_class) {
+		dahdi_dbg(DEVICES, "Destroying DAHDI class:\n");
+		class_destroy(dahdi_class);
+		dahdi_class = NULL;
+	}
+	unregister_chrdev(DAHDI_MAJOR, "dahdi");
+}
+
+int __init dahdi_sysfs_init(const struct file_operations *dahdi_fops)
+{
+	int res = 0;
+	void *dev;
+
+	res = register_chrdev(DAHDI_MAJOR, "dahdi", dahdi_fops);
+	if (res) {
+		module_printk(KERN_ERR, "Unable to register DAHDI character device handler on %d\n", DAHDI_MAJOR);
+		return res;
+	}
+	module_printk(KERN_INFO, "Telephony Interface Registered on major %d\n",
+			DAHDI_MAJOR);
+	module_printk(KERN_INFO, "Version: %s\n", DAHDI_VERSION);
+
+	dahdi_class = class_create(THIS_MODULE, "dahdi");
+	if (!dahdi_class) {
+		res = -EEXIST;
+		goto cleanup;
+	}
+
+	dahdi_dbg(DEVICES, "Creating /dev/dahdi/timer:\n");
+	dev = MAKE_DAHDI_DEV(DAHDI_TIMER, "dahdi!timer");
+	if (IS_ERR(dev)) {
+		res = PTR_ERR(dev);
+		goto cleanup;
+	}
+	dummy_dev.timer = 1;
+
+	dahdi_dbg(DEVICES, "Creating /dev/dahdi/channel:\n");
+	dev = MAKE_DAHDI_DEV(DAHDI_CHANNEL, "dahdi!channel");
+	if (IS_ERR(dev)) {
+		res = PTR_ERR(dev);
+		goto cleanup;
+	}
+	dummy_dev.channel = 1;
+
+	dahdi_dbg(DEVICES, "Creating /dev/dahdi/pseudo:\n");
+	dev = MAKE_DAHDI_DEV(DAHDI_PSEUDO, "dahdi!pseudo");
+	if (IS_ERR(dev)) {
+		res = PTR_ERR(dev);
+		goto cleanup;
+	}
+	dummy_dev.pseudo = 1;
+
+	dahdi_dbg(DEVICES, "Creating /dev/dahdi/ctl:\n");
+	dev = MAKE_DAHDI_DEV(DAHDI_CTL, "dahdi!ctl");
+	if (IS_ERR(dev)) {
+		res = PTR_ERR(dev);
+		goto cleanup;
+	}
+	dummy_dev.ctl = 1;
+
+	return 0;
+
+cleanup:
+	dahdi_sysfs_exit();
+	return res;
+}
+

Propchange: linux/trunk/drivers/dahdi/dahdi-sysfs.c
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: linux/trunk/drivers/dahdi/dahdi-sysfs.c
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: linux/trunk/drivers/dahdi/dahdi-sysfs.c
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: linux/trunk/drivers/dahdi/dahdi.h
URL: http://svnview.digium.com/svn/dahdi/linux/trunk/drivers/dahdi/dahdi.h?view=auto&rev=9628
==============================================================================
--- linux/trunk/drivers/dahdi/dahdi.h (added)
+++ linux/trunk/drivers/dahdi/dahdi.h Sun Jan 16 08:18:18 2011
@@ -1,0 +1,36 @@
+#ifndef _DAHDI_H
+#define _DAHDI_H
+
+/* dahdi.h: headers intended only for the dahdi.ko module.
+ * Not to be included elsewhere
+ *
+ * Written by Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+ * Copyright (C) 2011, Xorcom
+ *
+ * All rights reserved.
+ *
+ */
+
+/*
+ * See http://www.asterisk.org for more information about
+ * the Asterisk project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2 as published by the
+ * Free Software Foundation. See the LICENSE file included with
+ * this program for more details.
+ */
+
+extern int debug;
+
+int dahdi_register_chardev(struct dahdi_chardev *dev);
+int dahdi_unregister_chardev(struct dahdi_chardev *dev);
+int span_sysfs_create(struct dahdi_span *span);
+void span_sysfs_remove(struct dahdi_span *span);
+int __init dahdi_sysfs_init(const struct file_operations *dahdi_fops);
+void dahdi_sysfs_exit(void);
+
+#endif /* _DAHDI_H */

Propchange: linux/trunk/drivers/dahdi/dahdi.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: linux/trunk/drivers/dahdi/dahdi.h
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: linux/trunk/drivers/dahdi/dahdi.h
------------------------------------------------------------------------------
    svn:mime-type = text/plain




More information about the svn-commits mailing list