Hi, i’d like to compile the dgnc driver with a recent kernel :
2.6.31-gentoo-r6
i already patched a few things :
diff -rupNbB dgnc-1.3.orig/driver/dgnc_driver.c dgnc-1.3/driver/dgnc_driver.c
--- dgnc-1.3.orig/driver/dgnc_driver.c 2007-06-22 16:08:54.000000000 +0200
+++ dgnc-1.3/driver/dgnc_driver.c 2010-03-12 15:00:37.000000000 +0100
@@ -317,7 +317,7 @@ static int dgnc_start(void)
#ifdef DGNC_SYSFS_SUPPORT
dgnc_class = class_create(THIS_MODULE, "dgnc_mgmt");
- class_device_create(dgnc_class, NULL,
+ device_create(dgnc_class, NULL,
MKDEV(dgnc_Major, 0),
NULL, "dgnc_mgmt");
#endif
@@ -419,7 +419,7 @@ void dgnc_cleanup_module(void)
if (dgnc_Major_Control_Registered) {
#ifdef DGNC_SYSFS_SUPPORT
- class_device_destroy(dgnc_class, MKDEV(dgnc_Major, 0));
+ device_destroy(dgnc_class, MKDEV(dgnc_Major, 0));
class_destroy(dgnc_class);
#endif
unregister_chrdev(dgnc_Major, "dgnc");
diff -rupNbB dgnc-1.3.orig/driver/dgnc_proc.c dgnc-1.3/driver/dgnc_proc.c
--- dgnc-1.3.orig/driver/dgnc_proc.c 2007-06-22 16:08:54.000000000 +0200
+++ dgnc-1.3/driver/dgnc_proc.c 2010-03-12 15:00:54.000000000 +0100
@@ -170,7 +170,7 @@ static struct dgnc_proc_entry dgnc_chann
*/
static inline int dgnc_test_perm(int mode, int op)
{
- if (!current->euid)
+ if (!current->cred->euid)
mode >>= 6;
else if (in_egroup_p(0))
mode >>= 3;
@@ -1444,7 +1444,7 @@ void dgnc_proc_register_basic_prescan(vo
/*
* Register /proc/dgnc
*/
- ProcDGNC = create_proc_entry("dgnc", (0700 | S_IFDIR), &proc_root);
+ ProcDGNC = create_proc_entry("dgnc", (0700 | S_IFDIR), NULL);
dgnc_register_proc_table(dgnc_table, ProcDGNC);
}
but now i’m stucked on this :
make[1]: Entering directory `/root/src/dgnc-1.3.compiled/driver'
make -C /lib/modules/2.6.31-gentoo-r6/build SUBDIRS=$PWD modules MYPWD=/root/src/dgnc-1.3.compiled/driver
make[2]: Entering directory `/usr/src/linux-2.6.31-gentoo-r6'
CC [M] /root/src/dgnc-1.3.compiled/driver/dgnc_tty.o
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c: In function 'dgnc_tty_register':
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:238: error: 'struct tty_driver' has no member named 'refcount'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:269: error: 'struct tty_driver' has no member named 'open'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:270: error: 'struct tty_driver' has no member named 'close'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:271: error: 'struct tty_driver' has no member named 'ioctl'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:272: error: 'struct tty_driver' has no member named 'write'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:273: error: 'struct tty_driver' has no member named 'write_room'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:274: error: 'struct tty_driver' has no member named 'put_char'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:275: error: 'struct tty_driver' has no member named 'set_termios'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:276: error: 'struct tty_driver' has no member named 'chars_in_buffer'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:277: error: 'struct tty_driver' has no member named 'stop'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:278: error: 'struct tty_driver' has no member named 'start'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:279: error: 'struct tty_driver' has no member named 'throttle'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:280: error: 'struct tty_driver' has no member named 'unthrottle'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:281: error: 'struct tty_driver' has no member named 'flush_chars'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:282: error: 'struct tty_driver' has no member named 'flush_buffer'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:283: error: 'struct tty_driver' has no member named 'hangup'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:286: error: 'struct tty_driver' has no member named 'tiocmget'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:287: error: 'struct tty_driver' has no member named 'tiocmset'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:336: error: 'struct tty_driver' has no member named 'refcount'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:369: error: 'struct tty_driver' has no member named 'open'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:370: error: 'struct tty_driver' has no member named 'close'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:371: error: 'struct tty_driver' has no member named 'ioctl'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:372: error: 'struct tty_driver' has no member named 'write'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:373: error: 'struct tty_driver' has no member named 'write_room'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:374: error: 'struct tty_driver' has no member named 'put_char'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:375: error: 'struct tty_driver' has no member named 'set_termios'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:376: error: 'struct tty_driver' has no member named 'chars_in_buffer'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:377: error: 'struct tty_driver' has no member named 'stop'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:378: error: 'struct tty_driver' has no member named 'start'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:379: error: 'struct tty_driver' has no member named 'throttle'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:380: error: 'struct tty_driver' has no member named 'unthrottle'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:381: error: 'struct tty_driver' has no member named 'flush_chars'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:382: error: 'struct tty_driver' has no member named 'flush_buffer'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:383: error: 'struct tty_driver' has no member named 'hangup'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:386: error: 'struct tty_driver' has no member named 'tiocmget'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:387: error: 'struct tty_driver' has no member named 'tiocmset'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c: In function 'dgnc_input':
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:853: error: 'TTY_FLIPBUF_SIZE' undeclared (first use in this function)
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:853: error: (Each undeclared identifier is reported only once
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:853: error: for each function it appears in.)
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:883: error: 'struct tty_ldisc' has no member named 'receive_buf'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:959: error: request for member 'receive_buf' in something not a structure or union
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c: In function 'dgnc_wakeup_writes':
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:1635: error: request for member 'write_wakeup' in something not a structure or union
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:1638: error: request for member 'write_wakeup' in something not a structure or union
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:1677: error: request for member 'write_wakeup' in something not a structure or union
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:1680: error: request for member 'write_wakeup' in something not a structure or union
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c: In function 'dgnc_tty_close':
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:2236: error: 'struct tty_driver' has no member named 'flush_buffer'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:2238: error: 'struct tty_driver' has no member named 'flush_buffer'
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c: In function 'dgnc_tty_ioctl':
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:3634: error: request for member 'ioctl' in something not a structure or union
/root/src/dgnc-1.3.compiled/driver/dgnc_tty.c:3640: error: request for member 'ioctl' in something not a structure or union
make[3]: *** [/root/src/dgnc-1.3.compiled/driver/dgnc_tty.o] Error 1
make[2]: *** [_module_/root/src/dgnc-1.3.compiled/driver] Error 2
make[2]: Leaving directory `/usr/src/linux-2.6.31-gentoo-r6'
make[1]: *** [build] Error 2
make[1]: Leaving directory `/root/src/dgnc-1.3.compiled/driver'
make: *** [build] Error 2
has anybody here already gone though porting this driver on recent kernel ?
Thanks for your help.
Yann.
it works, thanks a lot, sorry for not finding this by myself 
Hi, after upgrading to linux-2.6.32-gentoo-r7 kernel, dgnc-1.3-18 is no more compiling properly :
/root/src/dgnc-1.3.compiled/driver/build/dgnc_driver.c: In function 'dgnc_found_board':
/root/src/dgnc-1.3.compiled/driver/build/dgnc_driver.c:732: error: 'TASK_INTERRUPTIBLE' undeclared (first use in this function)
/root/src/dgnc-1.3.compiled/driver/build/dgnc_driver.c:732: error: (Each undeclared identifier is reported only once
/root/src/dgnc-1.3.compiled/driver/build/dgnc_driver.c:732: error: for each function it appears in.)
/root/src/dgnc-1.3.compiled/driver/build/dgnc_driver.c: In function 'dgnc_mbuf':
/root/src/dgnc-1.3.compiled/driver/build/dgnc_driver.c:941: warning: cast from pointer to integer of different size
/root/src/dgnc-1.3.compiled/driver/build/dgnc_driver.c: In function 'dgnc_ms_sleep':
/root/src/dgnc-1.3.compiled/driver/build/dgnc_driver.c:956: error: dereferencing pointer to incomplete type
/root/src/dgnc-1.3.compiled/driver/build/dgnc_driver.c:956: error: 'TASK_INTERRUPTIBLE' undeclared (first use in this function)
/root/src/dgnc-1.3.compiled/driver/build/dgnc_driver.c:957: error: implicit declaration of function 'schedule_timeout'
/root/src/dgnc-1.3.compiled/driver/build/dgnc_driver.c:958: error: implicit declaration of function 'signal_pending'
make[3]: *** [/root/src/dgnc-1.3.compiled/driver/build/dgnc_driver.o] Error 1
make[2]: *** [_module_/root/src/dgnc-1.3.compiled/driver/build] Error 2
make[2]: Leaving directory `/usr/src/linux-2.6.32-gentoo-r7'
make[1]: *** [build] Error 2
make[1]: Leaving directory `/root/src/dgnc-1.3.compiled/driver/2.6.27'
make: *** [build] Error 2
thanks for your help.
Please confirm you are using the latest driver candidate from:
ftp://ftp1.digi.com/support/beta/linux/dgnc
There have been recent changes to accommodate newer kernels.
my previous post was with dgnc-1.3-18.src.rpm dated from “Oct 22”, i’ve just retried with the dgnc-1.3-18.src.rpm dated from “Apr 12” and result is the same.
We’ll need to see a complete log of the driver compilation starting with ./configure.
here it is :
# ./configure
checking for awk... /usr/bin/awk
checking for arch... /usr/bin/arch
checking for cat... /bin/cat
checking for chkconfig... /sbin/chkconfig
checking for chmod... /bin/chmod
checking for chown... /bin/chown
checking for cp... /bin/cp
checking for depmod... /sbin/depmod
checking for dialog... /usr/bin/dialog
checking for echo... /bin/echo
checking for fuser... /bin/fuser
checking for grep... /bin/grep
checking for init... /sbin/init
checking for insmod... /sbin/insmod
checking for kill... /bin/kill
checking for ln... /bin/ln
checking for ls... /bin/ls
checking for lsmod... /sbin/lsmod
checking for make... /usr/bin/make
checking for mkdir... /bin/mkdir
checking for mknod... /bin/mknod
checking for modprobe... /sbin/modprobe
checking for more... /bin/more
checking for mv... /bin/mv
checking for printf... /usr/bin/printf
checking for ps... /bin/ps
checking for rm... /bin/rm
checking for rmdir... /bin/rmdir
checking for rmmod... /sbin/rmmod
checking for sed... /bin/sed
checking for sh... /bin/sh
checking for sleep... /usr/bin/sleep
checking for stty... /bin/stty
checking for tar... /bin/tar
checking for tr... /usr/bin/tr
checking for touch... /usr/bin/touch
checking for true... /bin/true
checking for udevd... /sbin/udevd
checking for udevinfo... Not Found
checking for uname... /usr/bin/uname
checking for platform type... i386
checking for gcc... gcc
checking for gcc version... < 3.2 (/////4.3.4//4.3.4/
4.3.4)
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for current kernel version... 2.6.32-gentoo-r7 -> 2.6.32--7 -> 2.6.32
checking for kernel headers... "/lib/modules/2.6.32-gentoo-r7/build"
checking extra version of kernel... -gentoo-r7
checking if running kernel was compiled for SMP... Yes
checking what type of build we will do... KBUILD.
checking for modules directory... "/lib/modules/2.6.32-gentoo-r7"
configure: checking for tgetent...
configure: checking for libncurses...
checking if Distro specified... None
checking if New TTY Locking was specified... No - Defaulting to a value of "No"
checking if New TTY Buffering was specified... No - Defaulting to a value of "No"
checking if UDEV checking is overridden... No
checking if UDEV exists... No
configure: creating ./config.status
config.status: creating Makefile
config.status: creating driver/build/Makefile
config.status: creating config/Makefile
config.status: creating config/dgnc
config.status: creating config/dgnc_udev
config.status: creating config/dgnc_mknod
config.status: creating config/dgnc_updatedevs
config.status: creating utest/Makefile
config.status: creating ditty/Makefile
config.status: creating include/config.h
config.status: executing default commands
# make
(cd driver/build; make all)
make[1]: Entering directory `/root/src/dgnc-1.3/driver/2.6.27'
make -C /lib/modules/2.6.32-gentoo-r7/build SUBDIRS=$PWD modules MYPWD=/root/src/dgnc-1.3/driver/2.6.27
make[2]: Entering directory `/usr/src/linux-2.6.32-gentoo-r7'
CC [M] /root/src/dgnc-1.3/driver/build/dgnc_cls.o
CC [M] /root/src/dgnc-1.3/driver/build/dgnc_driver.o
/root/src/dgnc-1.3/driver/build/dgnc_driver.c: In function 'dgnc_found_board':
/root/src/dgnc-1.3/driver/build/dgnc_driver.c:738: error: 'TASK_INTERRUPTIBLE' undeclared (first use in this function)
/root/src/dgnc-1.3/driver/build/dgnc_driver.c:738: error: (Each undeclared identifier is reported only once
/root/src/dgnc-1.3/driver/build/dgnc_driver.c:738: error: for each function it appears in.)
/root/src/dgnc-1.3/driver/build/dgnc_driver.c: In function 'dgnc_mbuf':
/root/src/dgnc-1.3/driver/build/dgnc_driver.c:947: warning: cast from pointer to integer of different size
/root/src/dgnc-1.3/driver/build/dgnc_driver.c: In function 'dgnc_ms_sleep':
/root/src/dgnc-1.3/driver/build/dgnc_driver.c:962: error: dereferencing pointer to incomplete type
/root/src/dgnc-1.3/driver/build/dgnc_driver.c:962: error: 'TASK_INTERRUPTIBLE' undeclared (first use in this function)
/root/src/dgnc-1.3/driver/build/dgnc_driver.c:963: error: implicit declaration of function 'schedule_timeout'
/root/src/dgnc-1.3/driver/build/dgnc_driver.c:964: error: implicit declaration of function 'signal_pending'
make[3]: *** [/root/src/dgnc-1.3/driver/build/dgnc_driver.o] Error 1
make[2]: *** [_module_/root/src/dgnc-1.3/driver/build] Error 2
make[2]: Leaving directory `/usr/src/linux-2.6.32-gentoo-r7'
make[1]: *** [build] Error 2
make[1]: Leaving directory `/root/src/dgnc-1.3/driver/2.6.27'
make: *** [build] Error 2
thanks for your help.
Looks like this distro broke where some of the defines are supposed to be.
Please run the following to tell us where the Gentoo distro put them:
grep TASK_INTERRUPTIBLE /usr/src/linux-2.6.32-gentoo-r7/include/linux/*
grep schedule_timeout /usr/src/linux-2.6.32-gentoo-r7/include/linux/*
grep signal_pending /usr/src/linux-2.6.32-gentoo-r7/include/linux/*
i’m really surprised, linux-2.6.32-gentoo-r7 is just supposed to be a vanilla kernel plus some gentoo patches. the compilation was successful on linux-2.6.31-gentoo-r6 and the 3 grep you asked for returns the same results for both kernel :
# grep -l TASK_INTERRUPTIBLE /usr/src/linux-2.6.32-gentoo-r7/include/linux/*
/usr/src/linux-2.6.32-gentoo-r7/include/linux/sched.h
/usr/src/linux-2.6.32-gentoo-r7/include/linux/wait.h
# grep -l TASK_INTERRUPTIBLE /usr/src/linux-2.6.31-gentoo-r6/include/linux/*
/usr/src/linux-2.6.31-gentoo-r6/include/linux/sched.h
/usr/src/linux-2.6.31-gentoo-r6/include/linux/wait.h
# grep -l schedule_timeout /usr/src/linux-2.6.32-gentoo-r7/include/linux/*
/usr/src/linux-2.6.32-gentoo-r7/include/linux/poll.h
/usr/src/linux-2.6.32-gentoo-r7/include/linux/sched.h
/usr/src/linux-2.6.32-gentoo-r7/include/linux/usb.h
/usr/src/linux-2.6.32-gentoo-r7/include/linux/wait.h
# grep -l schedule_timeout /usr/src/linux-2.6.31-gentoo-r6/include/linux/*
/usr/src/linux-2.6.31-gentoo-r6/include/linux/poll.h
/usr/src/linux-2.6.31-gentoo-r6/include/linux/sched.h
/usr/src/linux-2.6.31-gentoo-r6/include/linux/usb.h
/usr/src/linux-2.6.31-gentoo-r6/include/linux/wait.h
# grep -l signal_pending /usr/src/linux-2.6.32-gentoo-r7/include/linux/*
/usr/src/linux-2.6.32-gentoo-r7/include/linux/errno.h
/usr/src/linux-2.6.32-gentoo-r7/include/linux/kthread.h
/usr/src/linux-2.6.32-gentoo-r7/include/linux/sched.h
/usr/src/linux-2.6.32-gentoo-r7/include/linux/tracehook.h
/usr/src/linux-2.6.32-gentoo-r7/include/linux/wait.h
# grep -l signal_pending /usr/src/linux-2.6.31-gentoo-r6/include/linux/*
/usr/src/linux-2.6.31-gentoo-r6/include/linux/errno.h
/usr/src/linux-2.6.31-gentoo-r6/include/linux/kthread.h
/usr/src/linux-2.6.31-gentoo-r6/include/linux/sched.h
/usr/src/linux-2.6.31-gentoo-r6/include/linux/tracehook.h
/usr/src/linux-2.6.31-gentoo-r6/include/linux/wait.h
did you successfully compiled dgnc against the 2.6.32 kernel ?
ok, sorry for being lazy, i have googled a bit since, and found that :
http://www.gossamer-threads.com/lists/linux/kernel/1140561
> This may be caused by commit d43c36dc6b357fa1806800f18aa30123c747a6d1.
> Can insert #include into drivers/char/rtc.c fix this?
and yes, it fixes it , here is the patch :
diff -rupNbB dgnc-1.3.orig/driver/2.6.27/dgnc_driver.c dgnc-1.3/driver/2.6.27/dgnc_driver.c
--- dgnc-1.3.orig/driver/2.6.27/dgnc_driver.c 2009-11-04 17:47:03.000000000 +0100
+++ dgnc-1.3/driver/2.6.27/dgnc_driver.c 2010-04-14 08:22:39.000000000 +0200
@@ -36,6 +36,7 @@
#include
#include
#include
+#include
#include "dgnc_driver.h"
#include "dgnc_pci.h"
regards,
Yann.