andrey Thu Jun 11 08:31:10 2009 UTC
Modified files:
/php-src/ext/mysqlnd mysqlnd.h mysqlnd_palloc.c
Log:
MFB: Reference decrement in own function. Make a function which is not
called externally static, from PHPAPI.
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd.h?r1=1.26&r2=1.27&diff_format=u
Index: php-src/ext/mysqlnd/mysqlnd.h
diff -u php-src/ext/mysqlnd/mysqlnd.h:1.26 php-src/ext/mysqlnd/mysqlnd.h:1.27
--- php-src/ext/mysqlnd/mysqlnd.h:1.26 Thu May 28 11:47:15 2009
+++ php-src/ext/mysqlnd/mysqlnd.h Thu Jun 11 08:31:09 2009
@@ -18,12 +18,12 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd.h,v 1.26 2009/05/28 11:47:15 andrey Exp $ */
+/* $Id: mysqlnd.h,v 1.27 2009/06/11 08:31:09 andrey Exp $ */
#ifndef MYSQLND_H
#define MYSQLND_H
-#define MYSQLND_VERSION "mysqlnd 5.0.5-dev - 081106 - $Revision: 1.26 $"
+#define MYSQLND_VERSION "mysqlnd 5.0.5-dev - 081106 - $Revision: 1.27 $"
#define MYSQLND_VERSION_ID 50005
/* This forces inlining of some accessor functions */
@@ -318,11 +318,9 @@
PHPAPI void
_mysqlnd_palloc_rshutdown(MYSQLND_THD_ZVAL_PCACHE * cache TSRMLS_DC);
-#define mysqlnd_palloc_init_thd_cache(cache)
_mysqlnd_palloc_init_thd_cache((cache) TSRMLS_CC)
#define mysqlnd_palloc_free_thd_cache_reference(cache)
_mysqlnd_palloc_free_thd_cache_reference((cache) TSRMLS_CC)
#define mysqlnd_palloc_get_thd_cache_reference(cache)
_mysqlnd_palloc_get_thd_cache_reference((cache) TSRMLS_CC)
-PHPAPI MYSQLND_THD_ZVAL_PCACHE*
_mysqlnd_palloc_init_thd_cache(MYSQLND_ZVAL_PCACHE * const cache TSRMLS_DC);
MYSQLND_THD_ZVAL_PCACHE*
_mysqlnd_palloc_get_thd_cache_reference(MYSQLND_THD_ZVAL_PCACHE * const cache
TSRMLS_DC);
PHPAPI void
_mysqlnd_palloc_free_thd_cache_reference(MYSQLND_THD_ZVAL_PCACHE **cache
TSRMLS_DC);
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_palloc.c?r1=1.18&r2=1.19&diff_format=u
Index: php-src/ext/mysqlnd/mysqlnd_palloc.c
diff -u php-src/ext/mysqlnd/mysqlnd_palloc.c:1.18
php-src/ext/mysqlnd/mysqlnd_palloc.c:1.19
--- php-src/ext/mysqlnd/mysqlnd_palloc.c:1.18 Thu May 28 16:35:16 2009
+++ php-src/ext/mysqlnd/mysqlnd_palloc.c Thu Jun 11 08:31:10 2009
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_palloc.c,v 1.18 2009/05/28 16:35:16 andrey Exp $ */
+/* $Id: mysqlnd_palloc.c,v 1.19 2009/06/11 08:31:10 andrey Exp $ */
#include "php.h"
#include "mysqlnd.h"
#include "mysqlnd_priv.h"
@@ -82,6 +82,7 @@
/* {{{ mysqlnd_palloc_get_cache_reference */
+static inline
MYSQLND_ZVAL_PCACHE* mysqlnd_palloc_get_cache_reference(MYSQLND_ZVAL_PCACHE *
const cache)
{
if (cache) {
@@ -94,6 +95,20 @@
/* }}} */
+/* {{{ mysqlnd_palloc_release_cache_reference */
+static inline
+MYSQLND_ZVAL_PCACHE*
mysqlnd_palloc_release_cache_reference(MYSQLND_ZVAL_PCACHE * const cache)
+{
+ if (cache) {
+ LOCK_PCACHE(cache);
+ cache->references--;
+ UNLOCK_PCACHE(cache);
+ }
+ return cache;
+}
+/* }}} */
+
+
/* {{{ mysqlnd_palloc_free_cache */
/*
As this call will happen on MSHUTDOWN(), then we don't need to copy the
zvals with
@@ -122,7 +137,7 @@
/* {{{ _mysqlnd_palloc_init_thd_cache */
-PHPAPI MYSQLND_THD_ZVAL_PCACHE*
_mysqlnd_palloc_init_thd_cache(MYSQLND_ZVAL_PCACHE * const cache TSRMLS_DC)
+MYSQLND_THD_ZVAL_PCACHE* mysqlnd_palloc_init_thd_cache(MYSQLND_ZVAL_PCACHE *
const cache TSRMLS_DC)
{
MYSQLND_THD_ZVAL_PCACHE *ret = calloc(1,
sizeof(MYSQLND_THD_ZVAL_PCACHE));
DBG_ENTER("_mysqlnd_palloc_init_thd_cache");
@@ -163,17 +178,18 @@
{
DBG_ENTER("_mysqlnd_palloc_get_thd_cache_reference");
if (cache) {
- ++cache->references;
DBG_INF_FMT("cache=%p new_refc=%d gc_list.canary1=%p
gc_list.canary2=%p",
cache, cache->references,
cache->gc_list.canary1, cache->gc_list.canary2);
mysqlnd_palloc_get_cache_reference(cache->parent);
+ /* No concurrency here, we are in the same thread */
+ ++cache->references;
}
DBG_RETURN(cache);
}
/* }}} */
-/* {{{ mysqlnd_palloc_free_cache */
+/* {{{ mysqlnd_palloc_free_thd_cache */
/*
As this call will happen on MSHUTDOWN(), then we don't need to copy the
zvals with
copy_ctor but scrap what they point to with zval_dtor() and then just free
our
@@ -230,7 +246,7 @@
{
DBG_ENTER("_mysqlnd_palloc_free_thd_cache_reference");
if (*cache) {
- --(*cache)->parent->references;
+ mysqlnd_palloc_release_cache_reference((*cache)->parent);
DBG_INF_FMT("cache=%p references_left=%d canary1=%p canary2=%p",
*cache, (*cache)->references,
(*cache)->gc_list.canary1, (*cache)->gc_list.canary2);
@@ -528,7 +544,7 @@
/* {{{ _mysqlnd_palloc_rinit */
PHPAPI MYSQLND_THD_ZVAL_PCACHE * _mysqlnd_palloc_rinit(MYSQLND_ZVAL_PCACHE *
cache TSRMLS_DC)
{
- return mysqlnd_palloc_init_thd_cache(cache);
+ return mysqlnd_palloc_init_thd_cache(cache TSRMLS_CC);
}
/* }}} */
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php