[Mesa-dev] [PATCH] move pthread_setaffinity_np check to the build system

Dylan Baker dylan at pnwbakers.com
Fri Sep 14 18:35:50 UTC 2018


Quoting Eric Engestrom (2018-09-14 09:39:27)
> On Thursday, 2018-09-13 11:41:38 -0700, Dylan Baker wrote:
> > Rather than trying to encode all of the rules in a header, lets just put
> > them in the build system where they belong. This fixes the build on
> > FreeBSD, which does have pthraed_setaffinity_np, but it's in a
> > pthread_np.h, not behind _GNU_SOURCE. FreeBSD also implements cpu_set
> > slightly differently, so additional changes would be required to get it
> > working right there anyway.
> > 
> > Fixes: 9f1bbbdbbd77d346c74c7abbb31f399151a85713
> >        ("util: try to fix the Android and MacOS build")
> > Cc: Marek Ol\u0161ák <maraeo at gmail.com>
> > Cc: Emil Velikov <emil.velikov at collabora.com>
> > ---
> >  configure.ac        | 16 ++++++++++++++++
> >  meson.build         |  7 +++++++
> >  src/util/u_thread.h |  4 ----
> >  3 files changed, 23 insertions(+), 4 deletions(-)
> > 
> > diff --git a/configure.ac b/configure.ac
> > index f8bb131cb63..d10236dbead 100644
> > --- a/configure.ac
> > +++ b/configure.ac
> > @@ -968,6 +968,22 @@ if test "x$pthread_stubs_possible" = xyes; then
> >      PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs >= 0.4)
> >  fi
> >  
> > +save_LIBS="$LIBS"
> > +LIBS="$PTHREAD_LIBS"
> > +AC_MSG_CHECKING(whether pthread_setaffinity_np is supported)
> > +AC_LINK_IFELSE([AC_LANG_SOURCE([[
> > +    #define _GNU_SOURCE
> > +    #include <pthread.h>
> > +    int main() {
> > +       void *a = (void*) &pthread_setaffinity_np;
> > +       long b = (long) a;
> > +       return (int) b;
> > +    }]])],
> > +  [DEFINES="$DEFINES -DPTHREAD_SETAFFINITY"];
> 
> -DHAVE_PTHREAD_SETAFFINITY
> 
> With that, and assuming the AC_LINK test code is correct:

I just copied the code that meson generates, lol. I'm not really sure that link
is required, it would probably work to just compile it.

> Reviewed-by: Eric Engestrom <eric.engestrom at intel.com>
> 
> > +   AC_MSG_RESULT([yes]),
> > +   AC_MSG_RESULT([no]))
> > +LIBS="$save_LIBS"
> > +
> >  dnl Check for futex for fast inline simple_mtx_t.
> >  AC_CHECK_HEADER([linux/futex.h], [DEFINES="$DEFINES -DHAVE_LINUX_FUTEX_H"])
> >  
> > diff --git a/meson.build b/meson.build
> > index 0d534b9b4a9..0588ebf8e7a 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -1070,6 +1070,13 @@ pre_args += '-DHAVE_ZLIB'
> >  dep_thread = dependency('threads')
> >  if dep_thread.found() and host_machine.system() != 'windows'
> >    pre_args += '-DHAVE_PTHREAD'
> > +  if cc.has_function(
> > +      'pthread_setaffinity_np',
> > +      dependencies : dep_thread,
> > +      prefix : '#include <pthread.h>',
> > +      args : '-D_GNU_SOURCE')
> > +    pre_args += '-DHAVE_PTHREAD_SETAFFINITY'
> > +  endif
> >  endif
> >  if with_amd_vk or with_gallium_radeonsi or with_gallium_r600 or with_gallium_opencl
> >    dep_elf = dependency('libelf', required : false)
> > diff --git a/src/util/u_thread.h b/src/util/u_thread.h
> > index eee6f3c712d..7538d7d634b 100644
> > --- a/src/util/u_thread.h
> > +++ b/src/util/u_thread.h
> > @@ -36,10 +36,6 @@
> >  #include <signal.h>
> >  #endif
> >  
> > -#if defined(HAVE_PTHREAD) && !defined(ANDROID) && !defined(__APPLE__)
> > -#define HAVE_PTHREAD_SETAFFINITY
> > -#endif
> > -
> >  static inline thrd_t u_thread_create(int (*routine)(void *), void *param)
> >  {
> >     thrd_t thread;
> > -- 
> > 2.19.0
> > 
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180914/177f1ddc/attachment.sig>


More information about the mesa-dev mailing list