Messages in this thread | | | Date | Mon, 1 Nov 2004 07:04:20 -0700 (MST) | From | Zwane Mwaikambo <> | Subject | Re: spinlock_t typedef visibility and uninitialized spinlock |
| |
On Mon, 1 Nov 2004, Carlos Vidal wrote:
> I'm porting CIPE 1.6.0 kernel module to Kernel 2.6.8 and had problems > with "spin_is_locked on uninitialized spinlock". > > After tracing the problem I found that the spinlock_t structure is not > visible to the module code. A 'gcc -E' yields: > typedef struct { } spinlock_t; > > In spinlock.h, this declaration is inside a #ifdef > CONFIG_DEBUG_SPINLOCK block, so it becomes visible only > CONFIG_DEBUG_SPINLOCK is 'y'. > > If I turn CONFIG_DEBUG_SPINLOCK on, the module loads nicely. Otherwise > I get a nasty error in syslog and sometimes a system crash, as if in > CIPE the struct was not allocated (what is the case if the compiler > uses the typedef as it is above). > > The question is: is this a bug or a feature? ;-) > > Should the declaration be out of the #ifdef CONFIG_DEBUG_SPINLOCK? Or > should I use a special compiler flag?
Try including <linux/config.h> at the top of the compilation unit and run through the preprocessor again. By the way, spinlock code got shuffled around in 2.6.9...
Zwane
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |