[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