--------------49A236C43D7AC9F01494212C Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, This maybe related to a problem that I was having with a netgear fa311 card I was trying to build drivers for. Here's was I saw and did: The netgear had a fa311.c file on it and a driver compiled for red hat 6.2 2.2.5-15 or something. I tried to compile it and got a whole ton of error like you describe. (Side note: I looked at the code and there was a comment that said that the drive might not be SMP friendly, so I found the pci_*.c and natsemi.c driver from scyld. Compiling this had the same symptoms) More to the point I found that in types.h there was a __KERNEL_STRICT_NAMES symbol and if I force this to be undefine in types.h I would create a .o file. (Whether this is proper or not I have no idea). (But this seems relevant to the messges put out by the #error directives below.) Experimentation suggested that both drivers work. But I haven't stressed them. A: Eric this might help/hurt you in the short term. B. What's the right thing to do? C. I know that I wasn't compling the vortex driver, but I have one of those cards too. That's why I'm listening now and shooting of my mouth, so to speak. Rich. Eric Lee wrote: > Hi, > > I have RedHat 7.0, and I have been having problems compiling the 3c90x > module. I keep getting a ton of errors at compile time. I've scoured the > archives, and people seem to be saying that I need to add > "-I/usr/src/linux/include" to my compile path. I made sure that the > appropriate directories were in place, and then added that to my compile line, > like this: > > [root@elee-1 3c90x-1.0.0]# gcc -Wall -Wstrict-prototypes -O2 > -I/usr/src/linux/include -c 3c90x.c -DMODVERSIONS -DMODULE -D__KERNEL__ -pipe > > > and these are the errors that I got: > > > In file included from 3c90x.h:23, > from 3c90x.c:1: > /usr/include/linux/modversions.h:1:2: #error Modules should never use > kernel-headers system headers, > /usr/include/linux/modversions.h:2:2: #error but headers from an appropriate > kernel-source > In file included from /usr/src/linux/include/linux/sched.h:18, > from 3c90x.h:38, > from 3c90x.c:2: > /usr/include/asm/semaphore.h:41: parse error before `wait_queue_head_t' > /usr/include/asm/semaphore.h:41: warning: no semicolon at end of struct or > union > /usr/include/asm/semaphore.h: In function `sema_init': > /usr/include/asm/semaphore.h:75: dereferencing pointer to incomplete type > /usr/include/asm/semaphore.h:76: dereferencing pointer to incomplete type > /usr/include/asm/semaphore.h:77: warning: implicit declaration of function > `init_waitqueue_head' > /usr/include/asm/semaphore.h:77: dereferencing pointer to incomplete type > /usr/include/asm/semaphore.h: At top level: > /usr/include/asm/semaphore.h:228: parse error before `wait_queue_head_t' > /usr/include/asm/semaphore.h:228: warning: no semicolon at end of struct or > union > /usr/include/asm/semaphore.h:229: warning: data definition has no type or > storage class > /usr/include/asm/semaphore.h: In function `init_rwsem': > /usr/include/asm/semaphore.h:257: dereferencing pointer to incomplete type > /usr/include/asm/semaphore.h:258: dereferencing pointer to incomplete type > /usr/include/asm/semaphore.h:259: dereferencing pointer to incomplete type > /usr/include/asm/semaphore.h:260: dereferencing pointer to incomplete type > /usr/include/asm/semaphore.h:261: dereferencing pointer to incomplete type > In file included from /usr/src/linux/include/linux/fs.h:334, > from /usr/src/linux/include/linux/tty.h:21, > from /usr/src/linux/include/linux/sched.h:22, > from 3c90x.h:38, > from 3c90x.c:2: > /usr/src/linux/include/linux/mount.h: At top level: > /usr/src/linux/include/linux/mount.h:20: field `dqio_sem' has incomplete type > /usr/src/linux/include/linux/mount.h:21: field `dqoff_sem' has incomplete type > > In file included from /usr/src/linux/include/linux/tty.h:21, > from /usr/src/linux/include/linux/sched.h:22, > from 3c90x.h:38, > from 3c90x.c:2: > /usr/src/linux/include/linux/fs.h:356: field `i_sem' has incomplete type > /usr/src/linux/include/linux/fs.h:357: field `i_atomic_write' has incomplete > type > In file included from /usr/src/linux/include/linux/fs.h:514, > from /usr/src/linux/include/linux/tty.h:21, > from /usr/src/linux/include/linux/sched.h:22, > from 3c90x.h:38, > from 3c90x.c:2: > /usr/src/linux/include/linux/smb_fs_sb.h:36: field `sem' has incomplete type > In file included from /usr/src/linux/include/linux/tty.h:21, > from /usr/src/linux/include/linux/sched.h:22, > from 3c90x.h:38, > from 3c90x.c:2: > /usr/src/linux/include/linux/fs.h:566: field `s_vfs_rename_sem' has incomplete > type > In file included from /usr/src/linux/include/linux/tty.h:24, > from /usr/src/linux/include/linux/sched.h:22, > from 3c90x.h:38, > from 3c90x.c:2: > /usr/src/linux/include/linux/tqueue.h: In function `queue_task': > /usr/src/linux/include/linux/tqueue.h:88: warning: implicit declaration of > function `spin_lock_irqsave' > /usr/src/linux/include/linux/tqueue.h:91: warning: implicit declaration of > function `spin_unlock_irqrestore' > In file included from /usr/src/linux/include/linux/sched.h:22, > from 3c90x.h:38, > from 3c90x.c:2: > /usr/src/linux/include/linux/tty.h: At top level: > /usr/src/linux/include/linux/tty.h:140: field `pty_sem' has incomplete type > /usr/src/linux/include/linux/tty.h:306: field `atomic_read' has incomplete > type > /usr/src/linux/include/linux/tty.h:307: field `atomic_write' has incomplete > type > In file included from /usr/src/linux/include/linux/string.h:38, > from /usr/include/asm/siginfo.h:218, > from /usr/src/linux/include/linux/signal.h:6, > from /usr/src/linux/include/linux/sched.h:24, > from 3c90x.h:38, > from 3c90x.c:2: > /usr/include/asm/string.h:48: warning: static declaration for `strncpy' > follows non-static > /usr/include/asm/string.h:67: warning: static declaration for `strcat' follows > non-static > /usr/include/asm/string.h:84: warning: static declaration for `strncat' > follows non-static > /usr/include/asm/string.h:128: warning: static declaration for `strncmp' > follows non-static > /usr/include/asm/string.h:151: warning: static declaration for `strchr' > follows non-static > /usr/include/asm/string.h:170: warning: static declaration for `strrchr' > follows non-static > /usr/include/asm/string.h:353: warning: static declaration for `memmove' > follows non-static > In file included from /usr/src/linux/include/linux/resource.h:58, > from /usr/src/linux/include/linux/sched.h:71, > from 3c90x.h:37, > from 3c90x.c:1: > /usr/include/asm/resource.h:25:25: warning: "RLIM_INFINITY" redefined > /usr/src/linux/include/linux/resource.h:40:1: warning: this is the location of > the previous definition > /usr/include/asm/string.h:436: warning: static declaration for `strnlen' > follows non-static > /usr/include/asm/string.h:457: warning: static declaration for `strstr' > follows non-static > /usr/include/asm/string.h:549: warning: static declaration for `memscan' > follows non-static > In file included from 3c90x.h:38, > from 3c90x.c:2: > /usr/src/linux/include/linux/sched.h:182: field `mmap_sem' has incomplete type > > In file included from /usr/include/linux/irq.h:5, > from /usr/include/asm/hardirq.h:6, > from /usr/src/linux/include/linux/interrupt.h:51, > from 3c90x.h:44, > from 3c90x.c:1: > /usr/include/linux/spinlock.h:55:30: warning: "SPIN_LOCK_UNLOCKED" redefined > /usr/include/asm/spinlock.h:36:1: warning: this is the location of the > previous definition > /usr/include/linux/spinlock.h:58:23: warning: "spin_lock_init" redefined > /usr/include/asm/spinlock.h:38:1: warning: this is the location of the > previous definition > /usr/include/linux/spinlock.h:60:23: warning: "spin_is_locked" redefined > /usr/include/asm/spinlock.h:47:1: warning: this is the location of the > previous definition > /usr/include/linux/spinlock.h:62:25: warning: "spin_unlock_wait" redefined > /usr/include/asm/spinlock.h:48:1: warning: this is the location of the > previous definition > /usr/include/linux/spinlock.h:118:28: warning: "RW_LOCK_UNLOCKED" redefined > /usr/include/asm/spinlock.h:131:1: warning: this is the location of the > previous definition > /usr/include/linux/spinlock.h:121:20: warning: "rwlock_init" redefined > /usr/include/asm/spinlock.h:133:1: warning: this is the location of the > previous definition > /usr/include/linux/spinlock.h:123:20: warning: "read_unlock" redefined > /usr/include/asm/spinlock.h:164:1: warning: this is the location of the > previous definition > /usr/include/linux/spinlock.h:125:21: warning: "write_unlock" redefined > /usr/include/asm/spinlock.h:165:1: warning: this is the location of the > previous definition > In file included from 3c90x.h:38, > from 3c90x.c:2: > /usr/src/linux/include/linux/sched.h: In function `add_wait_queue': > /usr/src/linux/include/linux/sched.h:712: warning: implicit declaration of > function `write_lock_irqsave' > /usr/src/linux/include/linux/sched.h:714: warning: implicit declaration of > function `write_unlock_irqrestore' > In file included from /usr/include/linux/irq.h:6, > from /usr/include/asm/hardirq.h:7, > from /usr/src/linux/include/linux/interrupt.h:52, > from 3c90x.h:45, > from 3c90x.c:2: > /usr/include/linux/spinlock.h: At top level: > /usr/include/linux/spinlock.h:54: conflicting types for `spinlock_t' > /usr/include/asm/spinlock.h:26: previous declaration of `spinlock_t' > /usr/include/linux/spinlock.h:117: conflicting types for `rwlock_t' > /usr/include/asm/spinlock.h:121: previous declaration of `rwlock_t' > In file included from /usr/src/linux/include/linux/vmalloc.h:8, > from /usr/include/asm/io.h:109, > from 3c90x.h:51, > from 3c90x.c:2: > /usr/include/asm/pgtable.h:21: conflicting types for `paging_init' > /usr/src/linux/include/linux/mm.h:301: previous declaration of `paging_init' > {standard input}: Assembler messages: > {standard input}:21: Warning: Ignoring changed section attributes for .modinfo > > 3c90x.c: In function `tc90x_HostErrorEvent': > /usr/src/linux/include/linux/tqueue.h:87: warning: `flags' might be used > uninitialized in this function > 3c90x.c: In function `tc90x_CountDownTimerEvent': > 3c90x.c:5520: warning: implicit declaration of function `mark_bh' > > **************************************************** > > any ideas on what to do? > thanks, > > Eric Lee --------------49A236C43D7AC9F01494212C Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> Hi,This maybe related to a problem that I was having with a netgear fa311 card I was trying to
build drivers for.Here's was I saw and did:
The netgear had a fa311.c file on it and a driver compiled for red hat 6.2 2.2.5-15 or something.
I tried to compile it and got a whole ton of error like you describe. (Side note: I looked at
the code and there was a comment that said that the drive might not be SMP friendly, so
I found the pci_*.c and natsemi.c driver from scyld. Compiling this had the same symptoms)More to the point I found that in types.h there was a __KERNEL_STRICT_NAMES symbol
and if I force this to be undefine in types.h I would create a .o file. (Whether this is proper or
not I have no idea). (But this seems relevant to the messges put out by the #error directives
below.) Experimentation suggested that both drivers work. But I haven't stressed them.A: Eric this might help/hurt you in the short term.
B. What's the right thing to do?
C. I know that I wasn't compling the vortex driver, but I have one of those cards too.
That's why I'm listening now and shooting of my mouth, so to speak.Rich.
Eric Lee wrote:
Hi,--------------49A236C43D7AC9F01494212C--I have RedHat 7.0, and I have been having problems compiling the 3c90x module. I keep getting a ton of errors at compile time. I've scoured the archives, and people seem to be saying that I need to add "-I/usr/src/linux/include" to my compile path. I made sure that the appropriate directories were in place, and then added that to my compile line, like this:
[root@elee-1 3c90x-1.0.0]# gcc -Wall -Wstrict-prototypes -O2 -I/usr/src/linux/include -c 3c90x.c -DMODVERSIONS -DMODULE -D__KERNEL__ -pipe
and these are the errors that I got:
In file included from 3c90x.h:23,
from 3c90x.c:1:
/usr/include/linux/modversions.h:1:2: #error Modules should never use kernel-headers system headers,
/usr/include/linux/modversions.h:2:2: #error but headers from an appropriate kernel-source
In file included from /usr/src/linux/include/linux/sched.h:18,
from 3c90x.h:38,
from 3c90x.c:2:
/usr/include/asm/semaphore.h:41: parse error before `wait_queue_head_t'
/usr/include/asm/semaphore.h:41: warning: no semicolon at end of struct or union
/usr/include/asm/semaphore.h: In function `sema_init':
/usr/include/asm/semaphore.h:75: dereferencing pointer to incomplete type
/usr/include/asm/semaphore.h:76: dereferencing pointer to incomplete type
/usr/include/asm/semaphore.h:77: warning: implicit declaration of function `init_waitqueue_head'
/usr/include/asm/semaphore.h:77: dereferencing pointer to incomplete type
/usr/include/asm/semaphore.h: At top level:
/usr/include/asm/semaphore.h:228: parse error before `wait_queue_head_t'
/usr/include/asm/semaphore.h:228: warning: no semicolon at end of struct or union
/usr/include/asm/semaphore.h:229: warning: data definition has no type or storage class
/usr/include/asm/semaphore.h: In function `init_rwsem':
/usr/include/asm/semaphore.h:257: dereferencing pointer to incomplete type
/usr/include/asm/semaphore.h:258: dereferencing pointer to incomplete type
/usr/include/asm/semaphore.h:259: dereferencing pointer to incomplete type
/usr/include/asm/semaphore.h:260: dereferencing pointer to incomplete type
/usr/include/asm/semaphore.h:261: dereferencing pointer to incomplete type
In file included from /usr/src/linux/include/linux/fs.h:334,
from /usr/src/linux/include/linux/tty.h:21,
from /usr/src/linux/include/linux/sched.h:22,
from 3c90x.h:38,
from 3c90x.c:2:
/usr/src/linux/include/linux/mount.h: At top level:
/usr/src/linux/include/linux/mount.h:20: field `dqio_sem' has incomplete type
/usr/src/linux/include/linux/mount.h:21: field `dqoff_sem' has incomplete type
In file included from /usr/src/linux/include/linux/tty.h:21,
from /usr/src/linux/include/linux/sched.h:22,
from 3c90x.h:38,
from 3c90x.c:2:
/usr/src/linux/include/linux/fs.h:356: field `i_sem' has incomplete type
/usr/src/linux/include/linux/fs.h:357: field `i_atomic_write' has incomplete type
In file included from /usr/src/linux/include/linux/fs.h:514,
from /usr/src/linux/include/linux/tty.h:21,
from /usr/src/linux/include/linux/sched.h:22,
from 3c90x.h:38,
from 3c90x.c:2:
/usr/src/linux/include/linux/smb_fs_sb.h:36: field `sem' has incomplete type
In file included from /usr/src/linux/include/linux/tty.h:21,
from /usr/src/linux/include/linux/sched.h:22,
from 3c90x.h:38,
from 3c90x.c:2:
/usr/src/linux/include/linux/fs.h:566: field `s_vfs_rename_sem' has incomplete type
In file included from /usr/src/linux/include/linux/tty.h:24,
from /usr/src/linux/include/linux/sched.h:22,
from 3c90x.h:38,
from 3c90x.c:2:
/usr/src/linux/include/linux/tqueue.h: In function `queue_task':
/usr/src/linux/include/linux/tqueue.h:88: warning: implicit declaration of function `spin_lock_irqsave'
/usr/src/linux/include/linux/tqueue.h:91: warning: implicit declaration of function `spin_unlock_irqrestore'
In file included from /usr/src/linux/include/linux/sched.h:22,
from 3c90x.h:38,
from 3c90x.c:2:
/usr/src/linux/include/linux/tty.h: At top level:
/usr/src/linux/include/linux/tty.h:140: field `pty_sem' has incomplete type
/usr/src/linux/include/linux/tty.h:306: field `atomic_read' has incomplete type
/usr/src/linux/include/linux/tty.h:307: field `atomic_write' has incomplete type
In file included from /usr/src/linux/include/linux/string.h:38,
from /usr/include/asm/siginfo.h:218,
from /usr/src/linux/include/linux/signal.h:6,
from /usr/src/linux/include/linux/sched.h:24,
from 3c90x.h:38,
from 3c90x.c:2:
/usr/include/asm/string.h:48: warning: static declaration for `strncpy' follows non-static
/usr/include/asm/string.h:67: warning: static declaration for `strcat' follows non-static
/usr/include/asm/string.h:84: warning: static declaration for `strncat' follows non-static
/usr/include/asm/string.h:128: warning: static declaration for `strncmp' follows non-static
/usr/include/asm/string.h:151: warning: static declaration for `strchr' follows non-static
/usr/include/asm/string.h:170: warning: static declaration for `strrchr' follows non-static
/usr/include/asm/string.h:353: warning: static declaration for `memmove' follows non-static
In file included from /usr/src/linux/include/linux/resource.h:58,
from /usr/src/linux/include/linux/sched.h:71,
from 3c90x.h:37,
from 3c90x.c:1:
/usr/include/asm/resource.h:25:25: warning: "RLIM_INFINITY" redefined
/usr/src/linux/include/linux/resource.h:40:1: warning: this is the location of the previous definition
/usr/include/asm/string.h:436: warning: static declaration for `strnlen' follows non-static
/usr/include/asm/string.h:457: warning: static declaration for `strstr' follows non-static
/usr/include/asm/string.h:549: warning: static declaration for `memscan' follows non-static
In file included from 3c90x.h:38,
from 3c90x.c:2:
/usr/src/linux/include/linux/sched.h:182: field `mmap_sem' has incomplete type
In file included from /usr/include/linux/irq.h:5,
from /usr/include/asm/hardirq.h:6,
from /usr/src/linux/include/linux/interrupt.h:51,
from 3c90x.h:44,
from 3c90x.c:1:
/usr/include/linux/spinlock.h:55:30: warning: "SPIN_LOCK_UNLOCKED" redefined
/usr/include/asm/spinlock.h:36:1: warning: this is the location of the previous definition
/usr/include/linux/spinlock.h:58:23: warning: "spin_lock_init" redefined
/usr/include/asm/spinlock.h:38:1: warning: this is the location of the previous definition
/usr/include/linux/spinlock.h:60:23: warning: "spin_is_locked" redefined
/usr/include/asm/spinlock.h:47:1: warning: this is the location of the previous definition
/usr/include/linux/spinlock.h:62:25: warning: "spin_unlock_wait" redefined
/usr/include/asm/spinlock.h:48:1: warning: this is the location of the previous definition
/usr/include/linux/spinlock.h:118:28: warning: "RW_LOCK_UNLOCKED" redefined
/usr/include/asm/spinlock.h:131:1: warning: this is the location of the previous definition
/usr/include/linux/spinlock.h:121:20: warning: "rwlock_init" redefined
/usr/include/asm/spinlock.h:133:1: warning: this is the location of the previous definition
/usr/include/linux/spinlock.h:123:20: warning: "read_unlock" redefined
/usr/include/asm/spinlock.h:164:1: warning: this is the location of the previous definition
/usr/include/linux/spinlock.h:125:21: warning: "write_unlock" redefined
/usr/include/asm/spinlock.h:165:1: warning: this is the location of the previous definition
In file included from 3c90x.h:38,
from 3c90x.c:2:
/usr/src/linux/include/linux/sched.h: In function `add_wait_queue':
/usr/src/linux/include/linux/sched.h:712: warning: implicit declaration of function `write_lock_irqsave'
/usr/src/linux/include/linux/sched.h:714: warning: implicit declaration of function `write_unlock_irqrestore'
In file included from /usr/include/linux/irq.h:6,
from /usr/include/asm/hardirq.h:7,
from /usr/src/linux/include/linux/interrupt.h:52,
from 3c90x.h:45,
from 3c90x.c:2:
/usr/include/linux/spinlock.h: At top level:
/usr/include/linux/spinlock.h:54: conflicting types for `spinlock_t'
/usr/include/asm/spinlock.h:26: previous declaration of `spinlock_t'
/usr/include/linux/spinlock.h:117: conflicting types for `rwlock_t'
/usr/include/asm/spinlock.h:121: previous declaration of `rwlock_t'
In file included from /usr/src/linux/include/linux/vmalloc.h:8,
from /usr/include/asm/io.h:109,
from 3c90x.h:51,
from 3c90x.c:2:
/usr/include/asm/pgtable.h:21: conflicting types for `paging_init'
/usr/src/linux/include/linux/mm.h:301: previous declaration of `paging_init'
{standard input}: Assembler messages:
{standard input}:21: Warning: Ignoring changed section attributes for .modinfo
3c90x.c: In function `tc90x_HostErrorEvent':
/usr/src/linux/include/linux/tqueue.h:87: warning: `flags' might be used uninitialized in this function
3c90x.c: In function `tc90x_CountDownTimerEvent':
3c90x.c:5520: warning: implicit declaration of function `mark_bh'****************************************************
any ideas on what to do?
thanks,Eric Lee