Prev: [PATCH] kobject: Suppress compiler warning with gcc 3.x
Next: [PATCH 0/6] sctp: add multistream scheduling feature
From: Eric Dumazet on 3 Jun 2010 01:40 Le jeudi 03 juin 2010 à 14:23 +0900, Tetsuo Handa a écrit : > Gcc 3.x generates a warning > > include/linux/sysfs.h:183: warning: parameter has incomplete type > > on each file. > Suppress the warning by moving the definition of "enum kobj_ns_type" > to before "#include <linux/sysfs.h>". > > Signed-off-by: Tetsuo Handa <penguin-kernel(a)I-love.SAKURA.ne.jp> I was about to submit same patch, but I was also reverting 27eabc7cb4b3 (sysfs: Don't use enums in inline function declaration.) So that sysfs_exit_ns() prototype is consistent regardless of CONFIG_SYSFS What do you think ? > --- > include/linux/kobject.h | 20 ++++++++++---------- > 1 file changed, 10 insertions(+), 10 deletions(-) > > --- linux-2.6.35-rc1.orig/include/linux/kobject.h > +++ linux-2.6.35-rc1/include/linux/kobject.h > @@ -16,6 +16,16 @@ > #ifndef _KOBJECT_H_ > #define _KOBJECT_H_ > > +/* > + * Namespace types which are used to tag kobjects and sysfs entries. > + * Network namespace will likely be the first. > + */ > +enum kobj_ns_type { > + KOBJ_NS_TYPE_NONE = 0, > + KOBJ_NS_TYPE_NET, > + KOBJ_NS_TYPES > +}; > + > #include <linux/types.h> > #include <linux/list.h> > #include <linux/sysfs.h> > @@ -136,16 +146,6 @@ struct kobj_attribute { > > extern const struct sysfs_ops kobj_sysfs_ops; > > -/* > - * Namespace types which are used to tag kobjects and sysfs entries. > - * Network namespace will likely be the first. > - */ > -enum kobj_ns_type { > - KOBJ_NS_TYPE_NONE = 0, > - KOBJ_NS_TYPE_NET, > - KOBJ_NS_TYPES > -}; > - > struct sock; > > /* -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Américo Wang on 3 Jun 2010 02:00 On Thu, Jun 03, 2010 at 07:31:41AM +0200, Eric Dumazet wrote: >Le jeudi 03 juin 2010 à 14:23 +0900, Tetsuo Handa a écrit : >> Gcc 3.x generates a warning >> >> include/linux/sysfs.h:183: warning: parameter has incomplete type >> >> on each file. >> Suppress the warning by moving the definition of "enum kobj_ns_type" >> to before "#include <linux/sysfs.h>". >> >> Signed-off-by: Tetsuo Handa <penguin-kernel(a)I-love.SAKURA.ne.jp> > > >I was about to submit same patch, but I was also reverting 27eabc7cb4b3 >(sysfs: Don't use enums in inline function declaration.) > >So that sysfs_exit_ns() prototype is consistent regardless of >CONFIG_SYSFS > >What do you think ? > This looks odd, in sysfs.h we do have a forward declaration of enum kobj_ns_type... I am wondering why gcc 3.x doesn't recognize it. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Eric W. Biederman on 3 Jun 2010 02:10 Américo Wang <xiyou.wangcong(a)gmail.com> writes: > On Thu, Jun 03, 2010 at 07:31:41AM +0200, Eric Dumazet wrote: >>Le jeudi 03 juin 2010 à 14:23 +0900, Tetsuo Handa a écrit : >>> Gcc 3.x generates a warning >>> >>> include/linux/sysfs.h:183: warning: parameter has incomplete type >>> >>> on each file. >>> Suppress the warning by moving the definition of "enum kobj_ns_type" >>> to before "#include <linux/sysfs.h>". >>> >>> Signed-off-by: Tetsuo Handa <penguin-kernel(a)I-love.SAKURA.ne.jp> >> >> >>I was about to submit same patch, but I was also reverting 27eabc7cb4b3 >>(sysfs: Don't use enums in inline function declaration.) >> >>So that sysfs_exit_ns() prototype is consistent regardless of >>CONFIG_SYSFS >> >>What do you think ? >> > > This looks odd, in sysfs.h we do have a forward declaration of > enum kobj_ns_type... I am wondering why gcc 3.x doesn't recognize it. Because the replacement is an inline, and we are passing the enum by value gcc wants to see the full definition, at the point where the inline function is declared. Eric -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Américo Wang on 3 Jun 2010 02:20 On Wed, Jun 02, 2010 at 11:02:28PM -0700, Eric W. Biederman wrote: >Américo Wang <xiyou.wangcong(a)gmail.com> writes: > >> On Thu, Jun 03, 2010 at 07:31:41AM +0200, Eric Dumazet wrote: >>>Le jeudi 03 juin 2010 à 14:23 +0900, Tetsuo Handa a écrit : >>>> Gcc 3.x generates a warning >>>> >>>> include/linux/sysfs.h:183: warning: parameter has incomplete type >>>> >>>> on each file. >>>> Suppress the warning by moving the definition of "enum kobj_ns_type" >>>> to before "#include <linux/sysfs.h>". >>>> >>>> Signed-off-by: Tetsuo Handa <penguin-kernel(a)I-love.SAKURA.ne.jp> >>> >>> >>>I was about to submit same patch, but I was also reverting 27eabc7cb4b3 >>>(sysfs: Don't use enums in inline function declaration.) >>> >>>So that sysfs_exit_ns() prototype is consistent regardless of >>>CONFIG_SYSFS >>> >>>What do you think ? >>> >> >> This looks odd, in sysfs.h we do have a forward declaration of >> enum kobj_ns_type... I am wondering why gcc 3.x doesn't recognize it. > >Because the replacement is an inline, and we are passing the enum by value >gcc wants to see the full definition, at the point where the inline function >is declared. > But sysfs_exit_ns() is not inlined if CONFIG_SYSFS here. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Eric Dumazet on 3 Jun 2010 02:50
Le jeudi 03 juin 2010 à 14:23 +0800, Américo Wang a écrit : > On Wed, Jun 02, 2010 at 11:02:28PM -0700, Eric W. Biederman wrote: > >Américo Wang <xiyou.wangcong(a)gmail.com> writes: > > > >> On Thu, Jun 03, 2010 at 07:31:41AM +0200, Eric Dumazet wrote: > >>>Le jeudi 03 juin 2010 à 14:23 +0900, Tetsuo Handa a écrit : > >>>> Gcc 3.x generates a warning > >>>> > >>>> include/linux/sysfs.h:183: warning: parameter has incomplete type > >>>> > >>>> on each file. > >>>> Suppress the warning by moving the definition of "enum kobj_ns_type" > >>>> to before "#include <linux/sysfs.h>". > >>>> > >>>> Signed-off-by: Tetsuo Handa <penguin-kernel(a)I-love.SAKURA.ne.jp> > >>> > >>> > >>>I was about to submit same patch, but I was also reverting 27eabc7cb4b3 > >>>(sysfs: Don't use enums in inline function declaration.) > >>> > >>>So that sysfs_exit_ns() prototype is consistent regardless of > >>>CONFIG_SYSFS > >>> > >>>What do you think ? > >>> > >> > >> This looks odd, in sysfs.h we do have a forward declaration of > >> enum kobj_ns_type... I am wondering why gcc 3.x doesn't recognize it. > > > >Because the replacement is an inline, and we are passing the enum by value > >gcc wants to see the full definition, at the point where the inline function > >is declared. > > > > But sysfs_exit_ns() is not inlined if CONFIG_SYSFS here. > # gcc -v Reading specs from /usr/lib/gcc/i386-redhat-linux/3.4.6/specs Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-java-awt=gtk --host=i386-redhat-linux Thread model: posix gcc version 3.4.6 20060404 (Red Hat 3.4.6-10) # cat try.c enum kobj_ns_type; void sysfs_exit_ns(enum kobj_ns_type type, const void *tag); int main(int argc, char *argv[]) { return 0; } # gcc -O2 -Wall -o try try.c try.c:2: warning: parameter has incomplete type # -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |