On 04/19/10 Jonathan Pryor wrote:
> Index: mono/io-layer/collection.c
> ===================================================================
> --- mono/io-layer/collection.c        (revision 155735)
> +++ mono/io-layer/collection.c        (working copy)
> @@ -58,7 +58,10 @@
>          ret = pthread_attr_init (&attr);
>          g_assert (ret == 0);
>  
> -#ifdef HAVE_PTHREAD_ATTR_SETSTACKSIZE
> +/* Android implements pthread_attr_setstacksize(), but errors out when using
> + * PTHREAD_STACK_MIN: http://code.google.com/p/android/issues/detail?id=7808
> + */
> +#if defined(HAVE_PTHREAD_ATTR_SETSTACKSIZE) && !defined(PLATFORM_ANDROID)
>          if (set_stacksize == 0) {
>  #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
>                       ret = pthread_attr_setstacksize (&attr, 65536);

Instead of adding more checks there, just change the code to do:
        ret = pthread_attr_setstacksize (&attr, MAX (65536, PTHREAD_STACK_MIN));

> Index: mono/io-layer/mono-mutex.c
> ===================================================================
> --- mono/io-layer/mono-mutex.c        (revision 155735)
> +++ mono/io-layer/mono-mutex.c        (working copy)
> @@ -22,11 +22,24 @@
>  
>  
>  #ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK
> +/* Android does not implement pthread_mutex_timedlock(), but does provide an
> + * unusual declaration: 
> http://code.google.com/p/android/issues/detail?id=7807
> + */
> +#if defined(PLATFORM_ANDROID)
>  int pthread_mutex_timedlock (pthread_mutex_t *mutex,
> +                         struct timespec *timeout);
> +#else
> +int pthread_mutex_timedlock (pthread_mutex_t *mutex,
>                           const struct timespec *timeout);
> +#endif

Just do this at the start:
#ifdef PLATFORM_ANDROID
#define CONST_NEEDED const
#else
#define CONST_NEEDED const
#endif

And then insert CONST_NEEDED where appropriate instead of the ugly
duplication and ifdef mess.

> Index: mono/mini/exceptions-arm.c
> ===================================================================
> --- mono/mini/exceptions-arm.c        (revision 155735)
> +++ mono/mini/exceptions-arm.c        (working copy)
> @@ -12,7 +12,11 @@
>  #include <glib.h>
>  #include <signal.h>
>  #include <string.h>
> +#if defined(PLATFORM_ANDROID)
> +#include <asm/sigcontext.h>
> +#else
>  #include <ucontext.h>
> +#endif

Please make sure configure has the appropriate header checks and use:

#ifdef HAVE_ASM_SIGCONTEXT_H
#include <asm/sigcontext.h>
#endif
#ifdef HAVE_UCONTEXT_H
#include <ucontext.h>
#endif

We must use feature checks and not platform checks as much as possible.

lupus

-- 
-----------------------------------------------------------------
lu...@debian.org                                     debian/rules
lu...@ximian.com                             Monkeys do it better
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to