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