* opensm/complib: redundant redeclaration of functions
@ 2010-02-01 13:05 Yevgeny Kliteynik
[not found] ` <4B66D189.2090500-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
0 siblings, 1 reply; 4+ messages in thread
From: Yevgeny Kliteynik @ 2010-02-01 13:05 UTC (permalink / raw)
To: Sasha Khapyorsky, Linux RDMA
Hi Sasha,
There are couple of places in complib headers that cause
compiler to complain:
cl_atomic.h:73: warning: redundant redeclaration of 'cl_atomic_inc'
cl_atomic_osd.h:58: warning: previous definition of 'cl_atomic_inc' was here
cl_atomic.h:104: warning: redundant redeclaration of 'cl_atomic_dec'
cl_atomic_osd.h:69: warning: previous definition of 'cl_atomic_dec' was here
cl_atomic.h:136: warning: redundant redeclaration of 'cl_atomic_add'
cl_atomic_osd.h:81: warning: previous definition of 'cl_atomic_add' was here
cl_atomic.h:171: warning: redundant redeclaration of 'cl_atomic_sub'
cl_atomic_osd.h:93: warning: previous definition of 'cl_atomic_sub' was here
cl_thread.h:346: warning: redundant redeclaration of 'cl_is_blockable'
cl_thread_osd.h:63: warning: previous definition of 'cl_is_blockable' was here
In general, here's the problem:
We have cl_file.h and cl_file_osd.h.
cl_file.h has include directive for cl_file_osd.h
cl_file.h has the following definition of function:
int foo();
cl_file_osd.h has another function definition, but
this time it also has implementation:
static inline int foo() { ..... }
Any preferable way to fix this?
Get rid of the _osd.h files and have the functions
implementation included in the usual .h file?
Define some *_HAVE_OSD flag in the _osd.h file
and enclose function declaration in the usual .h
file with #ifndef?
Any other ideas (I'd go for option 2)?
-- Yevgeny
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread[parent not found: <4B66D189.2090500-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>]
* Re: opensm/complib: redundant redeclaration of functions [not found] ` <4B66D189.2090500-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org> @ 2010-02-01 18:46 ` Jason Gunthorpe [not found] ` <20100201184616.GC25902-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Jason Gunthorpe @ 2010-02-01 18:46 UTC (permalink / raw) To: Yevgeny Kliteynik; +Cc: Sasha Khapyorsky, Linux RDMA On Mon, Feb 01, 2010 at 03:05:13PM +0200, Yevgeny Kliteynik wrote: > In general, here's the problem: > > We have cl_file.h and cl_file_osd.h. > cl_file.h has include directive for cl_file_osd.h > cl_file.h has the following definition of function: > int foo(); > > cl_file_osd.h has another function definition, but > this time it also has implementation: > static inline int foo() { ..... } > > Any preferable way to fix this? It looks to me like using 'extern inline' is appropriate here: extern inline int foo(); [..] inline int foo() { body } If no inline version is defined then the compiler just emits a normal function call, if an inline version is defined then the compiler might use it. Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <20100201184616.GC25902-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>]
* Re: opensm/complib: redundant redeclaration of functions [not found] ` <20100201184616.GC25902-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org> @ 2010-02-02 13:11 ` Yevgeny Kliteynik [not found] ` <4B68247E.6070405-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Yevgeny Kliteynik @ 2010-02-02 13:11 UTC (permalink / raw) To: Jason Gunthorpe; +Cc: Sasha Khapyorsky, Linux RDMA On 01/Feb/10 20:46, Jason Gunthorpe wrote: > On Mon, Feb 01, 2010 at 03:05:13PM +0200, Yevgeny Kliteynik wrote: > >> In general, here's the problem: >> >> We have cl_file.h and cl_file_osd.h. >> cl_file.h has include directive for cl_file_osd.h >> cl_file.h has the following definition of function: >> int foo(); >> >> cl_file_osd.h has another function definition, but >> this time it also has implementation: >> static inline int foo() { ..... } >> >> Any preferable way to fix this? > > It looks to me like using 'extern inline' is appropriate here: > > extern inline int foo(); > > [..] > > inline int foo() > { > body > } > > If no inline version is defined then the compiler just emits a normal > function call, if an inline version is defined then the compiler might > use it. Thanks for the idea. I read some documentation about it, and it does look that your suggestion should fix the problem, but it didn't :( Probably because they both are in .h files. -- Yevgeny > Jason > -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <4B68247E.6070405-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>]
* Re: opensm/complib: redundant redeclaration of functions [not found] ` <4B68247E.6070405-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org> @ 2010-02-02 18:33 ` Jason Gunthorpe 0 siblings, 0 replies; 4+ messages in thread From: Jason Gunthorpe @ 2010-02-02 18:33 UTC (permalink / raw) To: Yevgeny Kliteynik; +Cc: Sasha Khapyorsky, Linux RDMA On Tue, Feb 02, 2010 at 03:11:26PM +0200, Yevgeny Kliteynik wrote: > >If no inline version is defined then the compiler just emits a normal > >function call, if an inline version is defined then the compiler might > >use it. > > Thanks for the idea. > I read some documentation about it, and it does look that > your suggestion should fix the problem, but it didn't :( > Probably because they both are in .h files. No, but they do have to be in the right order. first header: extern inline int foo(); inline int foo() { body } 2nd header: extern inline int foo(); Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-02-02 18:33 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-01 13:05 opensm/complib: redundant redeclaration of functions Yevgeny Kliteynik
[not found] ` <4B66D189.2090500-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2010-02-01 18:46 ` Jason Gunthorpe
[not found] ` <20100201184616.GC25902-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2010-02-02 13:11 ` Yevgeny Kliteynik
[not found] ` <4B68247E.6070405-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2010-02-02 18:33 ` Jason Gunthorpe
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).