[svn-commits] kpfleming: branch 1.2 r2110 - in /branches/1.2: ./
xpp/
svn-commits at lists.digium.com
svn-commits at lists.digium.com
Wed Feb 7 13:29:23 MST 2007
Author: kpfleming
Date: Wed Feb 7 14:29:22 2007
New Revision: 2110
URL: http://svn.digium.com/view/zaptel?view=rev&rev=2110
Log:
build XPP on the kernels that Xorcom says are OK to build on
update workqueue usage to conform to kernel 2.6.20 API
Modified:
branches/1.2/Makefile.kernel26
branches/1.2/xpp/xbus-core.c
Modified: branches/1.2/Makefile.kernel26
URL: http://svn.digium.com/view/zaptel/branches/1.2/Makefile.kernel26?view=diff&rev=2110&r1=2109&r2=2110
==============================================================================
--- branches/1.2/Makefile.kernel26 (original)
+++ branches/1.2/Makefile.kernel26 Wed Feb 7 14:29:22 2007
@@ -2,10 +2,14 @@
obj-m += wct4xxp/ wctc4xxp/
# Also build xpp in the subdirectory xpp/ . But only for >=2.6.9 and only
-# for i386. On other arches the module will probably build but panic.
+# for i386 or x86_64. On other archs the module will probably build but panic.
-ifneq (,$(shell [ 0$(SUBLEVEL) -ge 8 ] && [ "$(ARCH)" = 'i386' ] && echo 1))
-obj-m += xpp/
+ifneq (,$(shell [ 0$(SUBLEVEL) -ge 9 ] && [ "$(ARCH)" = 'i386' ] && echo 1))
+obj-m+=xpp/
+endif
+
+ifneq (,$(shell [ 0$(SUBLEVEL) -ge 9 ] && [ "$(ARCH)" = 'x86_64' ] && echo 1))
+obj-m+=xpp/
endif
EXTRA_CFLAGS := -I$(src)
Modified: branches/1.2/xpp/xbus-core.c
URL: http://svn.digium.com/view/zaptel/branches/1.2/xpp/xbus-core.c?view=diff&rev=2110&r1=2109&r2=2110
==============================================================================
--- branches/1.2/xpp/xbus-core.c (original)
+++ branches/1.2/xpp/xbus-core.c Wed Feb 7 14:29:22 2007
@@ -72,7 +72,6 @@
static DEVICE_ATTR_FUNC(connector_show, dev, buf);
static DEVICE_ATTR_FUNC(status_show, dev, buf);
-static int xbus_poll(void *data);
static void xbus_release(struct device *dev);
static int xbus_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data);
static int xbus_read_waitfor_xpds(char *page, char **start, off_t off, int count, int *eof, void *data);
@@ -429,8 +428,16 @@
* it returns only when all XPD's on the bus are detected and
* initialized.
*/
-static int xbus_poll(void *data)
-{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
+static void xbus_poll(struct work_struct *work)
+{
+ xbus_t *xbus = container_of(work, xbus_t, xpds_init_work);
+#else
+static void xbus_poll(void *data)
+{
+ xbus_t *xbus = data;
+#endif
+
int id;
int ret = 0;
unsigned long flags;
@@ -440,11 +447,10 @@
struct list_head additions_list;
int count_removed;
int count_added;
- xbus_t *xbus = data;
if(!down_read_trylock(&xbus->in_use)) {
ERR("%s is being removed...\n", xbus->busname);
- return -EBUSY;
+ return;
}
msleep(2); /* roundtrip for older polls */
spin_lock_irqsave(&xbus->lock, flags);
@@ -543,7 +549,6 @@
wake_up(&xbus->wait_for_xpd_initialization);
out:
up_read(&xbus->in_use);
- return ret;
}
@@ -560,7 +565,11 @@
xbus->hardware_exists = 1;
DBG("Activating: %s\n", xbus->busname);
/* Poll it */
- INIT_WORK(&xbus->xpds_init_work, (void (*)(void *))xbus_poll, (void *)xbus);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
+ INIT_WORK(&xbus->xpds_init_work, xbus_poll);
+#else
+ INIT_WORK(&xbus->xpds_init_work, xbus_poll, xbus);
+#endif
if(!queue_work(xpp_worker, &xbus->xpds_init_work)) {
ERR("Failed to queue xpd initialization work\n");
/* FIXME: need to return error */
More information about the svn-commits
mailing list