[Pkg-voip-commits] r5827 - /asterisk/branches/etch/debian/patches/security-IAX2-performance.dpatch

paravoid at alioth.debian.org paravoid at alioth.debian.org
Thu Jun 5 01:59:57 UTC 2008


Author: paravoid
Date: Thu Jun  5 01:59:57 2008
New Revision: 5827

URL: http://svn.debian.org/wsvn/pkg-voip/?sc=1&rev=5827
Log:
fix build failure by backporting a function from upstream's svn

Modified:
    asterisk/branches/etch/debian/patches/security-IAX2-performance.dpatch

Modified: asterisk/branches/etch/debian/patches/security-IAX2-performance.dpatch
URL: http://svn.debian.org/wsvn/pkg-voip/asterisk/branches/etch/debian/patches/security-IAX2-performance.dpatch?rev=5827&op=diff
==============================================================================
--- asterisk/branches/etch/debian/patches/security-IAX2-performance.dpatch (original)
+++ asterisk/branches/etch/debian/patches/security-IAX2-performance.dpatch Thu Jun  5 01:59:57 2008
@@ -4,6 +4,7 @@
 ## All lines beginning with `## DP:' are a description of the patch.
 ## DP: Fix regressions caused by the chan_iax2 security fix
 ## DP: r115296, r115511, r115564, r119008, r119237
+## DP: also backport ast_atomic_add() from r55750
 
 @DPATCH@
 diff -urNad asterisk-1.2.13~dfsg~/Makefile asterisk-1.2.13~dfsg/Makefile
@@ -1954,3 +1955,56 @@
 +void *ao2_iterator_next(struct ao2_iterator *a);
 +
 +#endif /* _ASTERISK_ASTOBJ2_H */
+diff -urNad asterisk-1.2.13~dfsg~/include/asterisk/lock.h asterisk-1.2.13~dfsg/include/asterisk/lock.h
+--- asterisk-1.2.13~dfsg~/include/asterisk/lock.h	2006-08-30 20:58:31.000000000 +0300
++++ asterisk-1.2.13~dfsg/include/asterisk/lock.h	2008-06-05 04:53:13.000000000 +0300
+@@ -666,4 +666,31 @@
+ #define pthread_create __use_ast_pthread_create_instead__
+ #endif
+ 
++int ast_atomic_fetchadd_int_slow(volatile int *p, int v);
++
++#include "asterisk/inline_api.h"
++
++#if defined (__i386__)
++AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
++{
++	__asm __volatile (
++	"       lock   xaddl   %0, %1 ;        "
++	: "+r" (v),                     /* 0 (result) */   
++	  "=m" (*p)                     /* 1 */
++	: "m" (*p));                    /* 2 */
++	return (v);
++})
++#else   /* low performance version in utils.c */
++AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
++{
++	return ast_atomic_fetchadd_int_slow(p, v);
++})
++#endif
++
++AST_INLINE_API(int ast_atomic_dec_and_test(volatile int *p),
++{
++	int a = ast_atomic_fetchadd_int(p, -1);
++	return a == 1; /* true if the value is 0 now (so it was 1 previously) */
++})
++
+ #endif /* _ASTERISK_LOCK_H */
+diff -urNad asterisk-1.2.13~dfsg~/utils.c asterisk-1.2.13~dfsg/utils.c
+--- asterisk-1.2.13~dfsg~/utils.c	2006-10-12 21:31:26.000000000 +0300
++++ asterisk-1.2.13~dfsg/utils.c	2008-06-05 04:53:13.000000000 +0300
+@@ -906,3 +906,14 @@
+ #endif
+ }
+ 
++AST_MUTEX_DEFINE_STATIC(fetchadd_m); /* used for all fetc&add ops */
++
++int ast_atomic_fetchadd_int_slow(volatile int *p, int v)
++{
++        int ret;
++        ast_mutex_lock(&fetchadd_m);
++        ret = *p;
++        *p += v;
++        ast_mutex_unlock(&fetchadd_m);
++        return ret;
++}




More information about the Pkg-voip-commits mailing list