[PVFS-users] RE: Error in compiling pvfs-kernel with gcc-3.4.X

E. Otto ekw at data.lbl.gov
Wed Jul 21 15:47:28 EDT 2004


Hi,
Thanks! The patch fixes the problem.
===================================


Murali Vilayannur wrote:
> Hi,
> Could you please try the attached patch and let us know if it fixes your 
> problem?
> Thanks,
> Murali
> 
> On Wed, 21 Jul 2004, E. Otto wrote:
> 
> 
>>Hi,
>>In an attempt to recompile pvfs-kernel with gcc-3.4.X, I got a bunch of 
>>conflicting type error from "krwsemaphore-spinlock.c" and the prototype
>>definitions in rwsemaphore.h. Did any one encounter this before and
>>is there a quick fix? The sample errors are shown below: The error
>>occurs for all functions enclosed in the FASTCALL() macro.
>>...
>>...
>>krwsemaphore-spinlock.c:46: error: conflicting types for 'init_pvfs_rwsem'
>>rwsemaphore.h:47: error: previous declaration of 'init_pvfs_rwsem' was here
>>krwsemaphore-spinlock.c:46: error: conflicting types for 'init_pvfs_rwsem'
>>rwsemaphore.h:47: error: previous declaration of 'init_pvfs_rwsem' was here
>>krwsemaphore-spinlock.c:118: error: conflicting types for '__Down_read'
>>rwsemaphore.h:48: error: previous declaration of '__Down_read' was here
>>krwsemaphore-spinlock.c:118: error: conflicting types for '__Down_read'
>>rwsemaphore.h:48: error: previous declaration of '__Down_read' was here
>>krwsemaphore-spinlock.c:161: error: conflicting types for 
>>'__Down_read_trylock'
>>rwsemaphore.h:49: error: previous declaration of '__Down_read_trylock' 
>>was here
>>krwsemaphore-spinlock.c:161: error: conflicting types for 
>>'__Down_read_trylock'
>>rwsemaphore.h:49: error: previous declaration of '__Down_read_trylock' 
>>was here
>>krwsemaphore-spinlock.c:179: error: conflicting types for 
>>'__Down_read_interruptible'
>>rwsemaphore.h:50: error: previous declaration of 
>>'__Down_read_interruptible' was here
>>krwsemaphore-spinlock.c:179: error: conflicting types for 
>>'__Down_read_interruptible'
>>rwsemaphore.h:50: error: previous declaration of 
>>'__Down_read_interruptible' was here
>>krwsemaphore-spinlock.c:239: error: conflicting types for 
>>'__Down_timed_read_interruptible'
>>rwsemaphore.h:51: error: previous declaration of 
>>'__Down_timed_read_interruptible' was here
>>krwsemaphore-spinlock.c:239: error: conflicting types for 
>>'__Down_timed_read_interruptible'
>>rwsemaphore.h:51: error: previous declaration of 
>>'__Down_timed_read_interruptible' was here
>>krwsemaphore-spinlock.c:316: error: conflicting types for '__Down_write'
>>rwsemaphore.h:52: error: previous declaration of '__Down_write' was here
>>_______________________________________________
>>PVFS-users mailing list
>>PVFS-users at www.beowulf-underground.org
>>http://www.beowulf-underground.org/mailman/listinfo/pvfs-users
>>
>>
>>
>>------------------------------------------------------------------------
>>
>>Index: krwsemaphore-spinlock.c
>>===================================================================
>>RCS file: /anoncvs/pvfs-kernel/krwsemaphore-spinlock.c,v
>>retrieving revision 1.2
>>diff -u -r1.2 krwsemaphore-spinlock.c
>>--- krwsemaphore-spinlock.c	30 Oct 2002 21:38:39 -0000	1.2
>>+++ krwsemaphore-spinlock.c	21 Jul 2004 17:41:08 -0000
>>@@ -42,7 +42,7 @@
>> /*
>>  * initialise the semaphore
>>  */
>>-void init_pvfs_rwsem(struct pvfs_rw_semaphore *sem)
>>+void fastcall init_pvfs_rwsem(struct pvfs_rw_semaphore *sem)
>> {
>> 	sem->activity = 0;
>> 	spin_lock_init(&sem->wait_lock);
>>@@ -114,7 +114,7 @@
>> /*
>>  * get a read lock on the semaphore
>>  */
>>-void __Down_read(struct pvfs_rw_semaphore *sem)
>>+void fastcall __Down_read(struct pvfs_rw_semaphore *sem)
>> {
>> 	struct pvfs_rwsem_waiter waiter;
>> 	struct task_struct *tsk;
>>@@ -157,7 +157,7 @@
>> /*
>>  * trylock for reading -- returns 1 if successful, 0 if contention
>>  */
>>-int __Down_read_trylock(struct pvfs_rw_semaphore *sem)
>>+int fastcall __Down_read_trylock(struct pvfs_rw_semaphore *sem)
>> {
>> 	int ret = 0;
>> 	spin_lock(&sem->wait_lock);
>>@@ -175,7 +175,7 @@
>>  * Can get interrupted though and will 
>>  * return with -EINTR.
>>  */
>>-int __Down_read_interruptible(struct pvfs_rw_semaphore *sem)
>>+int fastcall __Down_read_interruptible(struct pvfs_rw_semaphore *sem)
>> {
>> 	int result = 0;
>> 	struct pvfs_rwsem_waiter waiter;
>>@@ -235,7 +235,7 @@
>>  * return with -ETIME or return 0 on success.
>>  * timeout should be in jiffies.
>>  */
>>-int __Down_timed_read_interruptible(struct pvfs_rw_semaphore *sem, signed long timeout)
>>+int fastcall __Down_timed_read_interruptible(struct pvfs_rw_semaphore *sem, signed long timeout)
>> {
>> 	int result = 0;
>> 	struct pvfs_rwsem_waiter waiter;
>>@@ -312,7 +312,7 @@
>>  * get a write lock on the semaphore
>>  * - note that we increment the waiting count anyway to indicate an exclusive lock
>>  */
>>-void __Down_write(struct pvfs_rw_semaphore *sem)
>>+void fastcall __Down_write(struct pvfs_rw_semaphore *sem)
>> {
>> 	struct pvfs_rwsem_waiter waiter;
>> 	struct task_struct *tsk;
>>@@ -355,7 +355,7 @@
>> /*
>>  * trylock for writing -- returns 1 if successful, 0 if contention
>>  */
>>-int __Down_write_trylock(struct pvfs_rw_semaphore *sem)
>>+int fastcall __Down_write_trylock(struct pvfs_rw_semaphore *sem)
>> {
>> 	int ret = 0;
>> 
>>@@ -377,7 +377,7 @@
>>  * - note that we increment the waiting count anyway to indicate an exclusive lock
>>  * We return -EINTR on a signal.
>>  */
>>-int __Down_write_interruptible(struct pvfs_rw_semaphore *sem)
>>+int fastcall __Down_write_interruptible(struct pvfs_rw_semaphore *sem)
>> {
>> 	int result = 0;
>> 	struct pvfs_rwsem_waiter waiter;
>>@@ -436,7 +436,7 @@
>>  * We return -EINTR on a signal and -ETIME on timeout and 0 on su.
>>  * timeout is in jiffies.
>>  */
>>-int __Down_timed_write_interruptible(struct pvfs_rw_semaphore *sem, signed long timeout)
>>+int fastcall __Down_timed_write_interruptible(struct pvfs_rw_semaphore *sem, signed long timeout)
>> {
>> 	int result = 0;
>> 	struct pvfs_rwsem_waiter waiter;
>>@@ -512,7 +512,7 @@
>> /*
>>  * release a read lock on the semaphore
>>  */
>>-void __Up_read(struct pvfs_rw_semaphore *sem)
>>+void fastcall __Up_read(struct pvfs_rw_semaphore *sem)
>> {
>> 	spin_lock(&sem->wait_lock);
>> 	if (--sem->activity==0 && !list_empty(&sem->wait_list))
>>@@ -524,7 +524,7 @@
>> /*
>>  * release a write lock on the semaphore
>>  */
>>-void __Up_write(struct pvfs_rw_semaphore *sem)
>>+void fastcall __Up_write(struct pvfs_rw_semaphore *sem)
>> {
>> 	spin_lock(&sem->wait_lock);
>> 	sem->activity = 0;
>>Index: rwsemaphore.h
>>===================================================================
>>RCS file: /anoncvs/pvfs-kernel/rwsemaphore.h,v
>>retrieving revision 1.2
>>diff -u -r1.2 rwsemaphore.h
>>--- rwsemaphore.h	30 Oct 2002 21:38:39 -0000	1.2
>>+++ rwsemaphore.h	21 Jul 2004 17:41:08 -0000
>>@@ -44,6 +44,14 @@
>> #define DECLARE_PVFS_RWSEM(name) \
>> 	struct pvfs_rw_semaphore name = __PVFS_RWSEM_INITIALIZER(name)
>> 
>>+#ifndef fastcall
>>+#ifdef __i386__
>>+#define fastcall	__attribute__((regparm(3)))
>>+#else
>>+#define fastcall
>>+#endif
>>+#endif
>>+
>> extern void FASTCALL(init_pvfs_rwsem(struct pvfs_rw_semaphore *sem));
>> extern void FASTCALL(__Down_read(struct pvfs_rw_semaphore *sem));
>> extern int FASTCALL(__Down_read_trylock(struct pvfs_rw_semaphore *sem));


More information about the PVFS-users mailing list