Messages in this thread | | | Date | Mon, 1 Nov 2004 12:05:04 +0100 | From | Carlos Vidal <> | Subject | spinlock_t typedef visibility and uninitialized spinlock |
| |
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?
Carlos - 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/
| |