Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Sep 2013 19:08:34 +0200
From:      Luigi Rizzo <rizzo@iet.unipi.it>
To:        Gleb Smirnoff <glebius@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r255289 - in head/sys: amd64/amd64 amd64/include ia64/ia64 ia64/include mips/include mips/mips
Message-ID:  <CA%2BhQ2%2BgdNd4wnX2%2Bfsd5Xq=FBYtbV3saQ%2B0oHC-CombEX1LWRA@mail.gmail.com>
In-Reply-To: <201309060537.r865boJN013504@svn.freebsd.org>
References:  <201309060537.r865boJN013504@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Sep 6, 2013 at 7:37 AM, Gleb Smirnoff <glebius@freebsd.org> wrote:

> Author: glebius
> Date: Fri Sep  6 05:37:49 2013
> New Revision: 255289
> URL: http://svnweb.freebsd.org/changeset/base/255289
>
> Log:
>   On those machines, where sf_bufs do not represent any real object, make
>   sf_buf_alloc()/sf_buf_free() inlines, to save two calls to an absolutely
>   empty functions.
>

this seems to break the build WITHOUT_CLANG:

cc1: warnings being treated as errors
In file included from /usr/home/luigi/FreeBSD/head/sys/dev/md/md.c:87:
/usr/home/luigi/FreeBSD/head/sys/sys/sf_buf.h:69: warning: redundant
redeclaration of 'sf_buf_alloc'
./machine/sf_buf.h:46: warning: previous definition of 'sf_buf_alloc' was
here
/usr/home/luigi/FreeBSD/head/sys/sys/sf_buf.h:70: warning: redundant
redeclaration of 'sf_buf_free'
./machine/sf_buf.h:53: warning: previous definition of 'sf_buf_free' was
here
*** [md.o] Error code 1

I don't know what could be a good way to handle this,
maybe make sf_buf_alloc/sf_buf_free/sf_buf_mext prototypes
mandatory in machine/sf_buf.h,
and use the prototypes here only in the !_KERNEL case ?
(and btw do we need sf_buf_mext() in that case ?)

cheers
luigi

I
>>  do
>> here
>
> *** [md.o] Error code 1
>
>
>   Reviewed by:  alc, kib, scottl
>   Sponsored by: Nginx, Inc.
>   Sponsored by: Netflix
>
> Modified:
>   head/sys/amd64/amd64/vm_machdep.c
>   head/sys/amd64/include/sf_buf.h
>   head/sys/ia64/ia64/vm_machdep.c
>   head/sys/ia64/include/sf_buf.h
>   head/sys/mips/include/sf_buf.h
>   head/sys/mips/mips/vm_machdep.c
>
> Modified: head/sys/amd64/amd64/vm_machdep.c
>
> ==============================================================================
> --- head/sys/amd64/amd64/vm_machdep.c   Fri Sep  6 05:20:11 2013
>  (r255288)
> +++ head/sys/amd64/amd64/vm_machdep.c   Fri Sep  6 05:37:49 2013
>  (r255289)
> @@ -59,7 +59,6 @@ __FBSDID("$FreeBSD$");
>  #include <sys/mutex.h>
>  #include <sys/pioctl.h>
>  #include <sys/proc.h>
> -#include <sys/sf_buf.h>
>  #include <sys/smp.h>
>  #include <sys/sysctl.h>
>  #include <sys/sysent.h>
> @@ -695,27 +694,6 @@ cpu_reset_real()
>  }
>
>  /*
> - * Allocate an sf_buf for the given vm_page.  On this machine, however,
> there
> - * is no sf_buf object.  Instead, an opaque pointer to the given vm_page
> is
> - * returned.
> - */
> -struct sf_buf *
> -sf_buf_alloc(struct vm_page *m, int pri)
> -{
> -
> -       return ((struct sf_buf *)m);
> -}
> -
> -/*
> - * Free the sf_buf.  In fact, do nothing because there are no resources
> - * associated with the sf_buf.
> - */
> -void
> -sf_buf_free(struct sf_buf *sf)
> -{
> -}
> -
> -/*
>   * Software interrupt handler for queued VM system processing.
>   */
>  void
>
> Modified: head/sys/amd64/include/sf_buf.h
>
> ==============================================================================
> --- head/sys/amd64/include/sf_buf.h     Fri Sep  6 05:20:11 2013
>  (r255288)
> +++ head/sys/amd64/include/sf_buf.h     Fri Sep  6 05:37:49 2013
>  (r255289)
> @@ -41,6 +41,18 @@
>   */
>  struct sf_buf;
>
> +static inline struct sf_buf *
> +sf_buf_alloc(struct vm_page *m, int pri)
> +{
> +
> +       return ((struct sf_buf *)m);
> +}
> +
> +static inline void
> +sf_buf_free(struct sf_buf *sf)
> +{
> +}
> +
>  static __inline vm_offset_t
>  sf_buf_kva(struct sf_buf *sf)
>  {
>
> Modified: head/sys/ia64/ia64/vm_machdep.c
>
> ==============================================================================
> --- head/sys/ia64/ia64/vm_machdep.c     Fri Sep  6 05:20:11 2013
>  (r255288)
> +++ head/sys/ia64/ia64/vm_machdep.c     Fri Sep  6 05:37:49 2013
>  (r255289)
> @@ -79,7 +79,6 @@
>  #include <sys/vmmeter.h>
>  #include <sys/kernel.h>
>  #include <sys/mbuf.h>
> -#include <sys/sf_buf.h>
>  #include <sys/sysctl.h>
>  #include <sys/unistd.h>
>
> @@ -353,27 +352,6 @@ cpu_exit(struct thread *td)
>  }
>
>  /*
> - * Allocate an sf_buf for the given vm_page.  On this machine, however,
> there
> - * is no sf_buf object.  Instead, an opaque pointer to the given vm_page
> is
> - * returned.
> - */
> -struct sf_buf *
> -sf_buf_alloc(struct vm_page *m, int pri)
> -{
> -
> -       return ((struct sf_buf *)m);
> -}
> -
> -/*
> - * Free the sf_buf.  In fact, do nothing because there are no resources
> - * associated with the sf_buf.
> - */
> -void
> -sf_buf_free(struct sf_buf *sf)
> -{
> -}
> -
> -/*
>   * Software interrupt handler for queued VM system processing.
>   */
>  void
>
> Modified: head/sys/ia64/include/sf_buf.h
>
> ==============================================================================
> --- head/sys/ia64/include/sf_buf.h      Fri Sep  6 05:20:11 2013
>  (r255288)
> +++ head/sys/ia64/include/sf_buf.h      Fri Sep  6 05:37:49 2013
>  (r255289)
> @@ -41,6 +41,18 @@
>   */
>  struct sf_buf;
>
> +static inline struct sf_buf *
> +sf_buf_alloc(struct vm_page *m, int pri)
> +{
> +
> +       return ((struct sf_buf *)m);
> +}
> +
> +static inline void
> +sf_buf_free(struct sf_buf *sf)
> +{
> +}
> +
>  static __inline vm_page_t
>  sf_buf_page(struct sf_buf *sf)
>  {
>
> Modified: head/sys/mips/include/sf_buf.h
>
> ==============================================================================
> --- head/sys/mips/include/sf_buf.h      Fri Sep  6 05:20:11 2013
>  (r255288)
> +++ head/sys/mips/include/sf_buf.h      Fri Sep  6 05:37:49 2013
>  (r255289)
> @@ -41,6 +41,18 @@
>  /* In 64 bit the whole memory is directly mapped */
>  struct sf_buf;
>
> +static inline struct sf_buf *
> +sf_buf_alloc(struct vm_page *m, int pri)
> +{
> +
> +       return ((struct sf_buf *)m);
> +}
> +
> +static inline void
> +sf_buf_free(struct sf_buf *sf)
> +{
> +}
> +
>  static __inline vm_offset_t
>  sf_buf_kva(struct sf_buf *sf)
>  {
>
> Modified: head/sys/mips/mips/vm_machdep.c
>
> ==============================================================================
> --- head/sys/mips/mips/vm_machdep.c     Fri Sep  6 05:20:11 2013
>  (r255288)
> +++ head/sys/mips/mips/vm_machdep.c     Fri Sep  6 05:37:49 2013
>  (r255289)
> @@ -76,7 +76,9 @@ __FBSDID("$FreeBSD$");
>
>  #include <sys/user.h>
>  #include <sys/mbuf.h>
> +#ifndef __mips_n64
>  #include <sys/sf_buf.h>
> +#endif
>
>  #ifndef NSFBUFS
>  #define        NSFBUFS         (512 + maxusers * 16)
> @@ -523,7 +525,6 @@ sf_buf_init(void *arg)
>         }
>         sf_buf_alloc_want = 0;
>  }
> -#endif
>
>  /*
>   * Get an sf_buf from the freelist.  Will block if none are available.
> @@ -531,7 +532,6 @@ sf_buf_init(void *arg)
>  struct sf_buf *
>  sf_buf_alloc(struct vm_page *m, int flags)
>  {
> -#ifndef __mips_n64
>         struct sf_buf *sf;
>         int error;
>
> @@ -560,9 +560,6 @@ sf_buf_alloc(struct vm_page *m, int flag
>         }
>         mtx_unlock(&sf_freelist.sf_lock);
>         return (sf);
> -#else
> -       return ((struct sf_buf *)m);
> -#endif
>  }
>
>  /*
> @@ -571,7 +568,6 @@ sf_buf_alloc(struct vm_page *m, int flag
>  void
>  sf_buf_free(struct sf_buf *sf)
>  {
> -#ifndef __mips_n64
>         pmap_qremove(sf->kva, 1);
>         mtx_lock(&sf_freelist.sf_lock);
>         SLIST_INSERT_HEAD(&sf_freelist.sf_head, sf, free_list);
> @@ -579,8 +575,8 @@ sf_buf_free(struct sf_buf *sf)
>         if (sf_buf_alloc_want > 0)
>                 wakeup(&sf_freelist);
>         mtx_unlock(&sf_freelist.sf_lock);
> -#endif
>  }
> +#endif /* !__mips_n64 */
>
>  /*
>   * Software interrupt handler for queued VM system processing.
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BhQ2%2BgdNd4wnX2%2Bfsd5Xq=FBYtbV3saQ%2B0oHC-CombEX1LWRA>