tony2001 Wed, 02 Dec 2009 16:37:42 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=291595
Log: add support for some weird platforms Changed paths: U php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_atomic.h U php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_conf.c U php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_env.c U php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_php_trace.c U php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_trace_pread.c U php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/xml_config.h Modified: php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_atomic.h =================================================================== --- php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_atomic.h 2009-12-02 15:05:12 UTC (rev 291594) +++ php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_atomic.h 2009-12-02 16:37:42 UTC (rev 291595) @@ -5,7 +5,11 @@ #ifndef FPM_ATOMIC_H #define FPM_ATOMIC_H 1 -#include <stdint.h> +#if HAVE_INTTYPES_H +# include <stdint.h> +#else +# include <stdint.h> +#endif #include <sched.h> #if ( __i386__ || __i386 ) @@ -57,8 +61,58 @@ return res; } +#if (__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)) + +#elif ( __arm__ || __arm ) /* W-Mark Kubacki */ + +#if (__arch64__ || __arch64) +typedef int64_t atomic_int_t; +typedef uint64_t atomic_uint_t; #else +typedef int32_t atomic_int_t; +typedef uint32_t atomic_uint_t; +#endif +#define atomic_cmp_set(a,b,c) __sync_bool_compare_and_swap(a,b,c) + +#endif /* defined (__GNUC__) &&... */ + +#elif ( __sparc__ || __sparc ) /* Marcin Ochab */ + +#if (__arch64__ || __arch64) +typedef uint64_t atomic_uint_t; +typedef volatile atomic_uint_t atomic_t; + +static inline int atomic_cas_64(atomic_t *lock, atomic_uint_t old, atomic_uint_t new) +{ + __asm__ __volatile__("casx [%2], %3, %0 " : "=&r"(new) : "0"(new), "r"(lock), "r"(old): "memory"); + + return new; +} + +static inline atomic_uint_t atomic_cmp_set(atomic_t *lock, atomic_uint_t old, atomic_uint_t set) +{ + return (atomic_cas_64(lock, old, set)==old); +} +#else +typedef uint32_t atomic_uint_t; +typedef volatile atomic_uint_t atomic_t; + +static inline int atomic_cas_32(atomic_t *lock, atomic_uint_t old, atomic_uint_t new) +{ + __asm__ __volatile__("cas [%2], %3, %0 " : "=&r"(new) : "0"(new), "r"(lock), "r"(old): "memory"); + + return new; +} + +static inline atomic_uint_t atomic_cmp_set(atomic_t *lock, atomic_uint_t old, atomic_uint_t set) +{ + return (atomic_cas_32(lock, old, set)==old); +} +#endif + +#else + #error unsupported processor. please write a patch and send it to me #endif Modified: php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_conf.c =================================================================== --- php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_conf.c 2009-12-02 15:05:12 UTC (rev 291594) +++ php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_conf.c 2009-12-02 16:37:42 UTC (rev 291595) @@ -10,7 +10,12 @@ #include <string.h> #include <stdlib.h> #include <stddef.h> -#include <stdint.h> +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# include <stdint.h> +#endif + #include <stdio.h> #include <unistd.h> Modified: php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_env.c =================================================================== --- php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_env.c 2009-12-02 15:05:12 UTC (rev 291594) +++ php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_env.c 2009-12-02 16:37:42 UTC (rev 291595) @@ -15,6 +15,24 @@ #include "zlog.h" #ifndef HAVE_SETENV +# ifdef (__sparc__ || __sparc) +int setenv(char *name, char *value, int clobber) +{ + char *malloc(); + char *getenv(); + char *cp; + + if (clobber == 0 && getenv(name) != 0) { + return 0; + } + + if ((cp = malloc(strlen(name) + strlen(value) + 2)) == 0) { + return 1; + } + sprintf(cp, "%s=%s", name, value); + return putenv(cp); +} +# else int setenv(char *name, char *value, int overwrite) { int name_len = strlen(name); @@ -31,6 +49,7 @@ return putenv(var); } +# endif #endif #ifndef HAVE_CLEARENV @@ -55,7 +74,37 @@ } #endif +#ifndef HAVE_UNSETENV +void unsetenv(const char *name) +{ + if(getenv(name) != NULL) { + int ct = 0; + int del = 0; + while(environ[ct] != NULL) { + if (nvmatch(name, environ[ct]) != 0) del=ct; /* <--- WTF?! */ + { ct++; } /* <--- WTF?! */ + } + /* isn't needed free here?? */ + environ[del] = environ[ct-1]; + environ[ct-1] = NULL; + } +} +static char * nvmatch(char *s1, char *s2) +{ + while(*s1 == *s2++) + { + if(*s1++ == '=') { + return s2; + } + } + if(*s1 == '\0' && *(s2-1) == '=') { + return s2; + } + return(NULL); +} +#endif + int fpm_env_init_child(struct fpm_worker_pool_s *wp) { struct key_value_s *kv; Modified: php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_php_trace.c =================================================================== --- php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_php_trace.c 2009-12-02 15:05:12 UTC (rev 291594) +++ php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_php_trace.c 2009-12-02 16:37:42 UTC (rev 291595) @@ -11,7 +11,11 @@ #include <stdio.h> #include <stddef.h> -#include <stdint.h> +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# include <stdint.h> +#endif #include <unistd.h> #include <sys/time.h> #include <sys/types.h> Modified: php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_trace_pread.c =================================================================== --- php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_trace_pread.c 2009-12-02 15:05:12 UTC (rev 291594) +++ php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/fpm_trace_pread.c 2009-12-02 16:37:42 UTC (rev 291595) @@ -11,7 +11,11 @@ #include <fcntl.h> #include <stdio.h> -#include <stdint.h> +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# include <stdint.h> +#endif #include "fpm_trace.h" #include "fpm_process_ctl.h" Modified: php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/xml_config.h =================================================================== --- php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/xml_config.h 2009-12-02 15:05:12 UTC (rev 291594) +++ php/php-src/branches/PHP_5_3_FPM/sapi/fpm/fpm/xml_config.h 2009-12-02 16:37:42 UTC (rev 291595) @@ -5,7 +5,11 @@ #ifndef XML_CONFIG_H #define XML_CONFIG_H 1 -#include <stdint.h> +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# include <stdint.h> +#endif struct xml_value_parser;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php