On Wed, Oct 17, 2012 at 5:55 AM, Enlightenment SVN
<[email protected]> wrote:
> Log:
> add eina barrier stuff.
>
>
>
> Author:       raster
> Date:         2012-10-16 20:55:24 -0700 (Tue, 16 Oct 2012)
> New Revision: 78099
> Trac:         http://trac.enlightenment.org/e/changeset/78099
>
> Added:
>   trunk/eina/src/include/eina_inline_lock_barrier.x
> Modified:
>   trunk/eina/configure.ac trunk/eina/m4/common/efl_threads.m4 
> trunk/eina/src/include/Makefile.am trunk/eina/src/include/eina_config.h.in 
> trunk/eina/src/include/eina_inline_lock_posix.x 
> trunk/eina/src/include/eina_inline_lock_void.x 
> trunk/eina/src/include/eina_inline_lock_win32.x 
> trunk/eina/src/include/eina_inline_lock_wince.x 
> trunk/eina/src/include/eina_lock.h
>
> Modified: trunk/eina/configure.ac
> ===================================================================
> --- trunk/eina/configure.ac     2012-10-17 02:43:50 UTC (rev 78098)
> +++ trunk/eina/configure.ac     2012-10-17 03:55:24 UTC (rev 78099)
> @@ -104,7 +104,11 @@
>  if ! test "x${efl_have_threads}" = "xno" ; then
>     EINA_CONFIGURE_HAVE_THREADS="#define EINA_HAVE_THREADS"
>  fi
> +if ! test "x${efl_have_pthread_barrier}" = "xno" ; then
> +   EINA_CONFIGURE_HAVE_PTHREAD_BARRIER="#define EINA_HAVE_PTHREAD_BARRIER"
> +fi
>  AC_SUBST(EINA_CONFIGURE_HAVE_THREADS)
> +AC_SUBST(EINA_CONFIGURE_HAVE_PTHREAD_BARRIER)
>  AM_CONDITIONAL([EINA_HAVE_THREADS], [! test "x${efl_have_threads}" = "xno"])
>
>  if test "x${efl_have_debug_threads}" = "xyes"; then
> @@ -616,6 +620,7 @@
>  echo "  Thread Support.......: ${efl_have_threads}"
>  if test "${efl_have_threads}" = "POSIX" ; then
>  echo "    spinlock...........: ${efl_have_posix_threads_spinlock}"
> +echo "    barrier............: ${efl_have_pthread_barrier}"
>  echo "    debug usage........: ${efl_have_debug_threads}"
>  echo "    on/off support.....: ${efl_have_on_off_threads}"
>  fi
>
> Modified: trunk/eina/m4/common/efl_threads.m4
> ===================================================================
> --- trunk/eina/m4/common/efl_threads.m4 2012-10-17 02:43:50 UTC (rev 78098)
> +++ trunk/eina/m4/common/efl_threads.m4 2012-10-17 03:55:24 UTC (rev 78099)
> @@ -64,6 +64,16 @@
>         EFL_PTHREAD_LIBS=${_efl_threads_libs}
>        ],
>        [_efl_have_posix_threads="no"])
> +   AC_LINK_IFELSE(
> +      [AC_LANG_PROGRAM([[
> +#include <pthread.h>
> +                       ]],
> +                       [[
> +pthread_barrier_t barrier;
> +pthread_barrier_init(&barrier, NULL, 1);
> +                       ]])],
> +      [efl_have_pthread_barrier="yes"],
> +      [efl_have_pthread_barrier="no"])
>     CFLAGS=${SAVE_CFLAGS}
>     LIBS=${SAVE_LIBS}
>
> @@ -75,8 +85,10 @@
>  else
>     if test "x${_efl_have_win32_threads}" = "xyes" ; then
>        efl_have_threads="Windows"
> +      efl_have_pthread_barrier="no"
>     else
>        efl_have_threads="no"
> +      efl_have_pthread_barrier="no"
>     fi
>  fi
>  AC_MSG_RESULT([${efl_have_threads}])
>
> Modified: trunk/eina/src/include/Makefile.am
> ===================================================================
> --- trunk/eina/src/include/Makefile.am  2012-10-17 02:43:50 UTC (rev 78098)
> +++ trunk/eina/src/include/Makefile.am  2012-10-17 03:55:24 UTC (rev 78099)
> @@ -64,7 +64,8 @@
>  eina_mmap.h \
>  eina_xattr.h \
>  eina_value.h \
> -eina_inline_value.x
> +eina_inline_value.x \
> +eina_inline_lock_barrier.x
>
>  # Will be back for developper after 1.2.
>  # eina_model.h
>
> Modified: trunk/eina/src/include/eina_config.h.in
> ===================================================================
> --- trunk/eina/src/include/eina_config.h.in     2012-10-17 02:43:50 UTC (rev 
> 78098)
> +++ trunk/eina/src/include/eina_config.h.in     2012-10-17 03:55:24 UTC (rev 
> 78099)
> @@ -58,6 +58,11 @@
>  #endif
>  @EINA_CONFIGURE_HAVE_THREADS@
>
> +#ifdef EINA_HAVE_PTHREAD_BARRIER
> +# undef EINA_HAVE_PTHREAD_BARRIER
> +#endif
> +@EINA_CONFIGURE_HAVE_PTHREAD_BARRIER@
> +
>  #ifdef EINA_HAVE_DEBUG_THREADS
>  # undef EINA_HAVE_DEBUG_THREADS
>  #endif
>
> Modified: trunk/eina/src/include/eina_inline_lock_posix.x
> ===================================================================
> --- trunk/eina/src/include/eina_inline_lock_posix.x     2012-10-17 02:43:50 
> UTC (rev 78098)
> +++ trunk/eina/src/include/eina_inline_lock_posix.x     2012-10-17 03:55:24 
> UTC (rev 78099)
> @@ -544,4 +544,38 @@
>     return (sem_post(sem) == 0) ? EINA_TRUE : EINA_FALSE;
>  }
>
> +#ifdef EINA_HAVE_PTHREAD_BARRIER
> +typedef struct _Eina_Barrier Eina_Barrier;

why not directly

typedef pthread_barrier_t Eina_Barrier;

?

Vincent

> +
> +struct _Eina_Barrier
> +{
> +   pthread_barrier_t barrier;
> +};
> +
> +static inline Eina_Bool
> +eina_barrier_new(Eina_Barrier *barrier, int needed)
> +{
> +   if (!pthread_barrier_init(&(barrier->barrier), NULL, needed))
> +     return EINA_TRUE;
> +   return EINA_FALSE;
> +}
> +
> +static inline void
> +eina_barrier_free(Eina_Barrier *barrier)
> +{
> +   pthread_barrier_destroy(&(barrier->barrier));
> +}
> +
> +static inline Eina_Bool
> +eina_barrier_wait(Eina_Barrier *barrier)
> +{
> +   pthread_barrier_wait(&(barrier->barrier));
> +   return EINA_TRUE;
> +}
> +
> +#else
> +#include "eina_inline_lock_barrier.x"
>  #endif
> +
> +
> +#endif
>
> Modified: trunk/eina/src/include/eina_inline_lock_void.x
> ===================================================================
> --- trunk/eina/src/include/eina_inline_lock_void.x      2012-10-17 02:43:50 
> UTC (rev 78098)
> +++ trunk/eina/src/include/eina_inline_lock_void.x      2012-10-17 03:55:24 
> UTC (rev 78099)
> @@ -257,6 +257,8 @@
>     return EINA_TRUE;
>  }
>
> +#include "eina_inline_lock_barrier.x"
> +
>  /**
>   * @}
>   */
>
> Modified: trunk/eina/src/include/eina_inline_lock_win32.x
> ===================================================================
> --- trunk/eina/src/include/eina_inline_lock_win32.x     2012-10-17 02:43:50 
> UTC (rev 78098)
> +++ trunk/eina/src/include/eina_inline_lock_win32.x     2012-10-17 03:55:24 
> UTC (rev 78099)
> @@ -551,4 +551,6 @@
>     return ReleaseSemaphore(*sem, count_release, NULL) ? EINA_TRUE : 
> EINA_FALSE;
>  }
>
> +#include "eina_inline_lock_barrier.x"
> +
>  #endif
>
> Modified: trunk/eina/src/include/eina_inline_lock_wince.x
> ===================================================================
> --- trunk/eina/src/include/eina_inline_lock_wince.x     2012-10-17 02:43:50 
> UTC (rev 78098)
> +++ trunk/eina/src/include/eina_inline_lock_wince.x     2012-10-17 03:55:24 
> UTC (rev 78099)
> @@ -204,4 +204,6 @@
>     return EINA_FALSE;
>  }
>
> +#include "eina_inline_lock_barrier.x"
> +
>  #endif
>
> Modified: trunk/eina/src/include/eina_lock.h
> ===================================================================
> --- trunk/eina/src/include/eina_lock.h  2012-10-17 02:43:50 UTC (rev 78098)
> +++ trunk/eina/src/include/eina_lock.h  2012-10-17 03:55:24 UTC (rev 78099)
> @@ -110,6 +110,14 @@
>  /** @relates static Eina_Bool eina_semaphore_release(sem_t *sem, int 
> count_release) */
>  static inline Eina_Bool eina_semaphore_release(Eina_Semaphore *sem, int 
> count_release);
>
> +/** @relates static Eina_Bool eina_barrier_new(Eina_Barrier *barrier, int 
> needed) @since 1.8 */
> +static inline Eina_Bool eina_barrier_new(Eina_Barrier *barrier, int needed);
> +/** @relates static void eina_barrier_free(Eina_Barrier *barrier); @since 
> 1.8 */
> +static inline void eina_barrier_free(Eina_Barrier *barrier);
> +/** @relates static Eina_Bool eina_barrier_wait(Eina_Barrier *barrier); 
> @since 1.8 */
> +static inline Eina_Bool eina_barrier_wait(Eina_Barrier *barrier);
> +
> +
>  #ifdef EINA_HAVE_DEBUG_THREADS
>  # define EINA_MAIN_LOOP_CHECK_RETURN_VAL(val)                          \
>    do {                                                                 \
>
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_sfd2d_oct
> _______________________________________________
> enlightenment-svn mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to