[dahdi-commits] dahdi/linux.git branch "master" updated.

SVN commits to the DAHDI project dahdi-commits at lists.digium.com
Sun Nov 24 06:56:15 CST 2013


branch "master" has been updated
       via  a9c85de7000d304674a07d65b6ab771ecf87966c (commit)
       via  7a822db82c808eda4febc087cf2aa31fa01b1362 (commit)
       via  007ff900251b1e29afc3fea09dda6e4cd617a455 (commit)
       via  be25fdb6fae0da2f81d2fc7d5b3ff37c71a9e6bc (commit)
       via  06daf6c270c4dfea7e602a213456e09b0eceef41 (commit)
       via  1672e07debda601aca50ae2de8c32c3eae9c9056 (commit)
       via  7b578b83b9d44a801628ff9b911906a14167898e (commit)
      from  1ab5723b85572712f70fb64c7c03358e542a2a55 (commit)

Summary of changes:
 .gitignore                  |    1 +
 Makefile                    |   14 +-----
 README                      |   11 ++++-
 build_tools/genudevrules    |   40 -----------------
 build_tools/live_dahdi      |    2 +-
 drivers/dahdi/dahdi-base.c  |   26 +++++------
 drivers/dahdi/dahdi-sysfs.c |  104 +++++++++++++++++++++++++++++++++++++++++--
 drivers/dahdi/xpp/xpp.rules |   11 -----
 8 files changed, 128 insertions(+), 81 deletions(-)
 delete mode 100755 build_tools/genudevrules
 delete mode 100644 drivers/dahdi/xpp/xpp.rules


- Log -----------------------------------------------------------------
commit a9c85de7000d304674a07d65b6ab771ecf87966c
Author: Oron Peled <oron.peled at xorcom.com>
Date:   Sun Nov 17 18:05:44 2013 +0200

    .gitignore: *.ko.unsigned
    
    Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
    Acked-by: Russ Meyerriecks <rmeyerriecks at digium.com>

diff --git a/.gitignore b/.gitignore
index 11a65e1..a35433e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@
 *.mod
 *.mod.[oc]
 *.ko
+*.ko.unsigned
 *.cmd
 *.order
 *.tar.gz

commit 7a822db82c808eda4febc087cf2aa31fa01b1362
Author: Oron Peled <oron.peled at xorcom.com>
Date:   Sun Nov 17 18:05:43 2013 +0200

    dahdi: Rename span 'master' as 'master_span'
    
    * No functional changes.
    * Rename the span 'master' to 'master_span' to avoid ambiguity with the
      'master' channel.
    
    Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
    Acked-by: Russ Meyerriecks <rmeyerriecks at digium.com>

diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c
index 0893b97..5a2ec49 100644
--- a/drivers/dahdi/dahdi-base.c
+++ b/drivers/dahdi/dahdi-base.c
@@ -173,7 +173,7 @@ static sumtype *conf_sums_next;
 static sumtype *conf_sums;
 static sumtype *conf_sums_prev;
 
-static struct dahdi_span *master;
+static struct dahdi_span *master_span;
 struct file_operations *dahdi_transcode_fops = NULL;
 
 
@@ -611,7 +611,7 @@ void dahdi_unregister_echocan_factory(const struct dahdi_echocan_factory *ec)
 /* Is this span our syncronization master? */
 int dahdi_is_sync_master(const struct dahdi_span *span)
 {
-	return span == master;
+	return span == master_span;
 }
 
 static inline void rotate_sums(void)
@@ -3847,7 +3847,7 @@ static void __dahdi_find_master_span(void)
 	struct dahdi_span *old_master;
 
 	spin_lock_irqsave(&chan_lock, flags);
-	old_master = master;
+	old_master = master_span;
 	list_for_each_entry(s, &span_list, spans_node) {
 		if (s->alarms && old_master)
 			continue;
@@ -3857,15 +3857,15 @@ static void __dahdi_find_master_span(void)
 			continue;
 		if (!can_provide_timing(s))
 			continue;
-		if (master == s)
+		if (master_span == s)
 			continue;
 
-		master = s;
+		master_span = s;
 		break;
 	}
 	spin_unlock_irqrestore(&chan_lock, flags);
 
-	if ((debug & DEBUG_MAIN) && (old_master != master))
+	if ((debug & DEBUG_MAIN) && (old_master != master_span))
 		module_printk(KERN_NOTICE, "Master changed to %s\n", s->name);
 }
 
@@ -3906,7 +3906,7 @@ void dahdi_alarm_notify(struct dahdi_span *span)
 			dahdi_alarm_channel(span->chans[x], span->alarms);
 
 		/* If we're going into or out of alarm we should try to find a
-		 * new master that may be a better fit. */
+		 * new master_span that may be a better fit. */
 		dahdi_find_master_span();
 
 		/* Report more detailed alarms */
@@ -5136,7 +5136,7 @@ static int dahdi_ioctl_startup(struct file *file, unsigned long data)
 		}
 
 		/* Now that this span is running, it might be selected as the
-		 * master span */
+		 * master_span */
 		__dahdi_find_master_span();
 	}
 	put_span(s);
@@ -7208,7 +7208,7 @@ EXPORT_SYMBOL(dahdi_init_span);
  * @spanno:	The span number we would like assigned. If 0, the first
  *		available spanno/basechan will be used.
  * @basechan:	The base channel number we would like. Ignored if spanno is 0.
- * @prefmaster:	will the new span be preferred as a master?
+ * @prefmaster:	will the new span be preferred as a master_span?
  *
  * Assigns a span for usage with DAHDI. All the channel numbers in it will
  * have their numbering started at basechan.
@@ -7486,8 +7486,8 @@ static int _dahdi_unassign_span(struct dahdi_span *span)
 	for (x=0;x<span->channels;x++)
 		dahdi_chan_unreg(span->chans[x]);
 
-	new_master = master; /* FIXME: locking */
-	if (master == span)
+	new_master = master_span; /* FIXME: locking */
+	if (master_span == span)
 		new_master = NULL;
 
 	spin_lock_irqsave(&chan_lock, flags);
@@ -7498,13 +7498,13 @@ static int _dahdi_unassign_span(struct dahdi_span *span)
 		break;
 	}
 	spin_unlock_irqrestore(&chan_lock, flags);
-	if (master != new_master) {
+	if (master_span != new_master) {
 		if (debug & DEBUG_MAIN) {
 			module_printk(KERN_NOTICE, "%s: Span ('%s') is new master\n", __FUNCTION__,
 				      (new_master)? new_master->name: "no master");
 		}
 	}
-	master = new_master;
+	master_span = new_master;
 	return 0;
 }
 

commit 007ff900251b1e29afc3fea09dda6e4cd617a455
Author: Oron Peled <oron.peled at xorcom.com>
Date:   Sun Nov 17 18:05:42 2013 +0200

    sysfs: create symlink "ddev" to device of span
    
    Create a "ddev" symlink from span's sysfs node to the one of its dahdi
    device.
    
    Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
    Acked-by: Russ Meyerriecks <rmeyerriecks at digium.com>

diff --git a/drivers/dahdi/dahdi-sysfs.c b/drivers/dahdi/dahdi-sysfs.c
index bca6821..3de37d5 100644
--- a/drivers/dahdi/dahdi-sysfs.c
+++ b/drivers/dahdi/dahdi-sysfs.c
@@ -306,6 +306,7 @@ void span_sysfs_remove(struct dahdi_span *span)
 	get_device(span_device);
 	span_uevent_send(span, KOBJ_OFFLINE);
 	device_unregister(span->span_device);
+	sysfs_remove_link(&span_device->kobj, "ddev");
 	dev_set_drvdata(span_device, NULL);
 	span_device->parent = NULL;
 	put_device(span_device);
@@ -345,6 +346,15 @@ int span_sysfs_create(struct dahdi_span *span)
 		span->span_device = NULL;
 		goto cleanup;
 	}
+	res = sysfs_create_link(&span_device->kobj, &span_device->parent->kobj,
+			"ddev");
+	if (res) {
+		span_err(span, "%s: sysfs_create_link failed: %d\n", __func__,
+				res);
+		kfree(span->span_device);
+		span->span_device = NULL;
+		goto cleanup;
+	}
 
 	for (x = 0; x < span->channels; x++) {
 		res = chan_sysfs_create(span->chans[x]);

commit be25fdb6fae0da2f81d2fc7d5b3ff37c71a9e6bc
Author: Oron Peled <oron.peled at xorcom.com>
Date:   Sun Nov 17 18:05:41 2013 +0200

    remove udev rules: moved to dahdi-tools
    
    * Removed xpp.rules
    * Removed generation of dahdi.rules
    
    Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
    Acked-by: Russ Meyerriecks <rmeyerriecks at digium.com>

diff --git a/Makefile b/Makefile
index 3c0ca24..a005ed1 100644
--- a/Makefile
+++ b/Makefile
@@ -47,8 +47,6 @@ ifeq (yes,$(HAS_KSRC))
   HOTPLUG_FIRMWARE:=$(shell if grep -q '^CONFIG_FW_LOADER=[ym]' $(KCONFIG); then echo "yes"; else echo "no"; fi)
 endif
 
-UDEV_DIR:=/etc/udev/rules.d
-
 MODULE_ALIASES:=wcfxs wctdm8xxp wct2xxp
 
 INST_HEADERS:=kernel.h user.h fasthdlc.h wctdm_user.h dahdi_config.h
@@ -87,7 +85,7 @@ prereq: include/dahdi/version.h firmware-loaders
 stackcheck: $(CHECKSTACK) modules
 	objdump -d drivers/dahdi/*.ko drivers/dahdi/*/*.ko | $(CHECKSTACK)
 
-install: all install-modules install-devices install-include install-firmware install-xpp-firm
+install: all install-modules install-include install-firmware install-xpp-firm
 	@echo "###################################################"
 	@echo "###"
 	@echo "### DAHDI installed successfully."
@@ -96,7 +94,7 @@ install: all install-modules install-devices install-include install-firmware in
 	@echo "###"
 	@echo "###################################################"
 
-uninstall: uninstall-modules uninstall-devices uninstall-include uninstall-firmware
+uninstall: uninstall-modules uninstall-include uninstall-firmware
 
 install-modconf:
 	build_tools/genmodconf $(BUILDVER) "$(ROOT_PREFIX)" "$(filter-out dahdi dahdi_dummy xpp dahdi_transcode dahdi_dynamic,$(BUILD_MODULES)) $(MODULE_ALIASES)"
@@ -130,14 +128,6 @@ uninstall-include:
 	done
 	-rmdir $(DESTDIR)/usr/include/dahdi
 
-install-devices:
-	install -d $(DESTDIR)$(UDEV_DIR)
-	build_tools/genudevrules > $(DESTDIR)$(UDEV_DIR)/dahdi.rules
-	install -m 644 drivers/dahdi/xpp/xpp.rules $(DESTDIR)$(UDEV_DIR)/
-
-uninstall-devices:
-	rm -f $(DESTDIR)$(UDEV_DIR)/dahdi.rules
-
 install-modules: modules
 ifndef DESTDIR
 	@if modinfo zaptel > /dev/null 2>&1; then \
diff --git a/build_tools/genudevrules b/build_tools/genudevrules
deleted file mode 100755
index cfd3c90..0000000
--- a/build_tools/genudevrules
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-ver=`udevinfo -V | cut -f3 -d" "`
-
-if [ -z "${ver}" ]; then
-   # Not found - try udevadm
-   ver=`udevadm info -V | cut -f3 -d" "`
-
-   if [ -z "${ver}" ]; then
-      # nobody has that old version, anyway.
-      ver=54
-   fi
-fi
-
-# udev versions prior to 055 use a single '=' for matching key values
-# udev versions 055 and later support '==' for that purpose, and versions
-# beyond 092 will probably make it mandatory
-#
-# very old versions of udev required naming rules and permissions rules to be
-# in separate files, but it's not clear at what version number that changed
-
-if [ ${ver} -gt 54 ]; then
-    match="=="
-else
-    match="="
-fi
-
-cat <<EOF
-# udev rules to generate the /dev/dahdi device files (if not yet provided 
-# by your distribution):
-KERNEL${match}"dahdictl", NAME="dahdi/ctl"
-KERNEL${match}"dahditranscode", NAME="dahdi/transcode"
-KERNEL${match}"dahditimer", NAME="dahdi/timer"
-KERNEL${match}"dahdichannel", NAME="dahdi/channel"
-KERNEL${match}"dahdipseudo", NAME="dahdi/pseudo"
-KERNEL${match}"dahdi[0-9]*", NAME="dahdi/%n"
-
-# DAHDI devices with ownership/permissions for running as non-root
-SUBSYSTEM${match}"dahdi",  OWNER="asterisk", GROUP="asterisk", MODE="0660"
-EOF
diff --git a/drivers/dahdi/xpp/xpp.rules b/drivers/dahdi/xpp/xpp.rules
deleted file mode 100644
index 93f772d..0000000
--- a/drivers/dahdi/xpp/xpp.rules
+++ /dev/null
@@ -1,11 +0,0 @@
-# Load firmware into the Xorcom Astribank device:
-SUBSYSTEM=="usb", ACTION=="add", \
-ENV{PRODUCT}=="e4e4/11[3456][013]/*", ENV{DEVTYPE}!="usb_interface", \
-	RUN+="/usr/share/dahdi/xpp_fxloader udev $env{PRODUCT}"
-
-# Hotplug hook for Astribank up/down
-# If you need this functionality, copy the astribank_hook.sample
-# to $XPP_INIT_DIR/astribank_hook
-#
-# By default XPP_INIT_DIR="/usr/share/dahdi"
-KERNEL=="xbus*", RUN+="%E{XPP_INIT_DIR}/astribank_hook udev $kernel $sysfs{status} $sysfs{connector}"

commit 06daf6c270c4dfea7e602a213456e09b0eceef41
Author: Oron Peled <oron.peled at xorcom.com>
Date:   Sun Nov 17 18:05:40 2013 +0200

    live_dahdi: load "dahdi" with tools_rootdir=$DESTDIR
    
    Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
    Acked-by: Russ Meyerriecks <rmeyerriecks at digium.com>

diff --git a/build_tools/live_dahdi b/build_tools/live_dahdi
index bc37bb2..70cfcf7 100755
--- a/build_tools/live_dahdi
+++ b/build_tools/live_dahdi
@@ -61,7 +61,7 @@ export ASTRIBANK_HEXLOAD
 
 # make sure Astribank initialization scripts are from our tree.
 xpp_ARGS="$xpp_ARGS initdir=$FIRMWARE_DIR"
-#dahdi_ARGS="$dahdi_ARGS initdir=$FIRMWARE_DIR"
+dahdi_ARGS="$dahdi_ARGS tools_rootdir=$DESTDIR"
 
 if [ "$DYNAMIC_LOC" = 'yes' ]; then
 	MODULES_LOAD="$MODULES_LOAD dahdi_dynamic dahdi_dynamic_loc"

commit 1672e07debda601aca50ae2de8c32c3eae9c9056
Author: Oron Peled <oron.peled at xorcom.com>
Date:   Sun Nov 17 18:05:39 2013 +0200

    Also send DAHDI_TOOLS_ROOTDIR with device events
    
    Send the new DAHDI_TOOLS_ROOTDIR and existing DAHDI_INIT_DIR with udev
    device events as well.
    
    Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
    Acked-by: Russ Meyerriecks <rmeyerriecks at digium.com>

diff --git a/drivers/dahdi/dahdi-sysfs.c b/drivers/dahdi/dahdi-sysfs.c
index f43ec79..bca6821 100644
--- a/drivers/dahdi/dahdi-sysfs.c
+++ b/drivers/dahdi/dahdi-sysfs.c
@@ -371,6 +371,71 @@ static inline struct dahdi_device *to_ddev(struct device *dev)
 	return container_of(dev, struct dahdi_device, dev);
 }
 
+#define	DEVICE_VAR_BLOCK	\
+	do {		\
+		DAHDI_ADD_UEVENT_VAR("DAHDI_TOOLS_ROOTDIR=%s", tools_rootdir); \
+		DAHDI_ADD_UEVENT_VAR("DAHDI_INIT_DIR=%s/%s", tools_rootdir,    \
+				initdir);				\
+		DAHDI_ADD_UEVENT_VAR("DAHDI_DEVICE_HWID=%s",		\
+				ddev->hardware_id);			\
+		DAHDI_ADD_UEVENT_VAR("DAHDI_DEVICE_LOCATION=%s",	\
+				ddev->location);			\
+	} while (0)
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24)
+#define DAHDI_ADD_UEVENT_VAR(fmt, val...)			\
+	do {							\
+		int err = add_uevent_var(envp, num_envp, &i,	\
+				buffer, buffer_size, &len,	\
+				fmt, val);			\
+		if (err)					\
+			return err;				\
+	} while (0)
+
+static int device_uevent(struct device *dev, char **envp, int num_envp,
+		char *buffer, int buffer_size)
+{
+	struct dahdi_device	*ddev;
+	int			i = 0;
+	int			len = 0;
+
+	if (!dev)
+		return -ENODEV;
+
+	ddev = to_ddev(dev);
+	if (!ddev)
+		return -ENODEV;
+
+	dahdi_dbg(GENERAL, "SYFS dev_name=%s\n", dev_name(dev));
+	DEVICE_VAR_BLOCK;
+	envp[i] = NULL;
+	return 0;
+}
+
+#else
+#define DAHDI_ADD_UEVENT_VAR(fmt, val...)			\
+	do {							\
+		int err = add_uevent_var(kenv, fmt, val);	\
+		if (err)					\
+			return err;				\
+	} while (0)
+
+static int device_uevent(struct device *dev, struct kobj_uevent_env *kenv)
+{
+	struct dahdi_device *ddev;
+
+	if (!dev)
+		return -ENODEV;
+	ddev = to_ddev(dev);
+	if (!ddev)
+		return -ENODEV;
+	dahdi_dbg(GENERAL, "SYFS dev_name=%s\n", dev_name(dev));
+	DEVICE_VAR_BLOCK;
+	return 0;
+}
+
+#endif
+
 static ssize_t
 dahdi_device_manufacturer_show(struct device *dev,
 			       struct device_attribute *attr, char *buf)
@@ -579,6 +644,7 @@ static struct device_attribute dahdi_device_attrs[] = {
 
 static struct bus_type dahdi_device_bus = {
 	.name = "dahdi_devices",
+	.uevent         = device_uevent,
 	.dev_attrs = dahdi_device_attrs,
 };
 

commit 7b578b83b9d44a801628ff9b911906a14167898e
Author: Oron Peled <oron.peled at xorcom.com>
Date:   Sun Nov 17 18:05:38 2013 +0200

    dahdi: add "tools_rootdir" module parameter
    
    * Passed to udev as DAHDI_TOOLS_ROOTDIR environment variable
    * Default is "/"
    * Deprecates the parameter initdir:
      - Defaults to $DAHDI_TOOLS_ROOTDIR/usr/share/dahdi
      - If specified: taken relative to $DAHDI_TOOLS_ROOTDIR
      - Setting both parameters explicitly is prohibited.
    
    Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
    Acked-by: Russ Meyerriecks <rmeyerriecks at digium.com>

diff --git a/README b/README
index e432ac5..51a8fb3 100644
--- a/README
+++ b/README
@@ -534,10 +534,19 @@ DAHDI hardware. However if you have such systems, automatic
 registration can cause the order of spans to be unpredictable.
 The standard startup scripts use 'dahdi_registration on' instead of this.
 
+==== tools_rootdir
+(xpp)
+
+Defaults to /. Passed (as the variable DAHDI_TOOLS_ROOTDIR) to generated
+events (which can be used in udev hooks). Also serves as the base of
+the variable DAHDI_INIT_DIR (by default: $DAHDI_TOOLS_DIR/usr/share/dahdi).
+
 ==== initdir
 (xpp)
 
-This is the directory containing the initialization scripts.
+Deprecated. Setting both initdir and tools_rootdir will generate an error.
+
+A directory under tools_rootdir containing the initialization scripts.
 The default is /usr/share/dahdi .
 Setting this value could be useful if that location is inconvenient for you.
 
diff --git a/drivers/dahdi/dahdi-sysfs.c b/drivers/dahdi/dahdi-sysfs.c
index 2b50c3f..f43ec79 100644
--- a/drivers/dahdi/dahdi-sysfs.c
+++ b/drivers/dahdi/dahdi-sysfs.c
@@ -32,8 +32,15 @@
 #include "dahdi-sysfs.h"
 
 
-static char *initdir = "/usr/share/dahdi";
-module_param(initdir, charp, 0644);
+static char *initdir;
+module_param(initdir, charp, 0444);
+MODULE_PARM_DESC(initdir,
+		"deprecated, should use <tools_rootdir>/usr/share/dahdi");
+
+static char *tools_rootdir;
+module_param(tools_rootdir, charp, 0444);
+MODULE_PARM_DESC(tools_rootdir,
+		"root directory of all tools paths (default /)");
 
 static int span_match(struct device *dev, struct device_driver *driver)
 {
@@ -47,7 +54,9 @@ static inline struct dahdi_span *dev_to_span(struct device *dev)
 
 #define	SPAN_VAR_BLOCK	\
 	do {		\
-		DAHDI_ADD_UEVENT_VAR("DAHDI_INIT_DIR=%s", initdir);	\
+		DAHDI_ADD_UEVENT_VAR("DAHDI_TOOLS_ROOTDIR=%s", tools_rootdir); \
+		DAHDI_ADD_UEVENT_VAR("DAHDI_INIT_DIR=%s/%s", tools_rootdir,    \
+				initdir);	\
 		DAHDI_ADD_UEVENT_VAR("SPAN_NUM=%d", span->spanno);	\
 		DAHDI_ADD_UEVENT_VAR("SPAN_NAME=%s", span->name);	\
 	} while (0)
@@ -650,6 +659,19 @@ int __init dahdi_sysfs_init(const struct file_operations *dahdi_fops)
 	int res = 0;
 
 	dahdi_dbg(DEVICES, "Registering DAHDI device bus\n");
+
+	/* Handle dahdi-tools paths (for udev environment) */
+	if (tools_rootdir && initdir) {
+		dahdi_err("Cannot use tools-rootdir and initdir parameters simultaneously\n");
+		return -EINVAL;
+	}
+	if (initdir)
+		pr_notice("dahdi: initdir is depracated -- prefer using \"tools_rootdir\" parameter\n");
+	else
+		initdir = "/usr/share/dahdi";
+	if (!tools_rootdir)
+		tools_rootdir = "";
+
 	res = bus_register(&dahdi_device_bus);
 	if (res)
 		return res;

-----------------------------------------------------------------------


-- 
dahdi/linux.git



More information about the dahdi-commits mailing list