diff options
author | Jani Taskinen <jani@php.net> | 2007-07-25 23:47:33 +0000 |
---|---|---|
committer | Jani Taskinen <jani@php.net> | 2007-07-25 23:47:33 +0000 |
commit | f3c2a33f4232b60b67e584ad94aeea3c3f8f7cf4 (patch) | |
tree | 4bef837b820227aafd16043ef700601588d9ac23 /ext/mysqlnd/mysqlnd_palloc.h | |
parent | e0849ab010c287912986698230cb02ef74bddfb8 (diff) | |
download | php-git-f3c2a33f4232b60b67e584ad94aeea3c3f8f7cf4.tar.gz |
- Moved mysqnd to it's own directory: It is sort of an extension itself.
(Similar to what ext/libxml is..)
Diffstat (limited to 'ext/mysqlnd/mysqlnd_palloc.h')
-rw-r--r-- | ext/mysqlnd/mysqlnd_palloc.h | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/ext/mysqlnd/mysqlnd_palloc.h b/ext/mysqlnd/mysqlnd_palloc.h new file mode 100644 index 0000000000..434df01730 --- /dev/null +++ b/ext/mysqlnd/mysqlnd_palloc.h @@ -0,0 +1,109 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 6 | + +----------------------------------------------------------------------+ + | Copyright (c) 2006-2007 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Georg Richter <georg@mysql.com> | + | Andrey Hristov <andrey@mysql.com> | + | Ulf Wendel <uwendel@mysql.com> | + +----------------------------------------------------------------------+ +*/ + +/* $Id$ */ +#ifndef MYSQLND_PALLOC_H +#define MYSQLND_PALLOC_H + +/* Session caching allocator */ +struct st_mysqlnd_zval_list { + zval **ptr_line; + zval **last_added; +}; + +typedef struct st_mysqlnd_zval_cache MYSQLND_ZVAL_CACHE; + +struct st_mysqlnd_zval_cache { + struct st_mysqlnd_zval_list *free_list; + unsigned int free_items; + unsigned int max_items; + unsigned int references; + unsigned long get_hits; + unsigned long get_misses; + unsigned long put_hits; + unsigned long put_full_misses; + unsigned long put_refcount_misses; +}; + + +enum mysqlnd_zval_ptr_type +{ + MYSQLND_POINTS_INT_BUFFER, + MYSQLND_POINTS_EXT_BUFFER, + MYSQLND_POINTS_FREE +}; + +/* Persistent caching allocator */ +typedef struct st_mysqlnd_zval { + /* Should be first */ + zval zv; + enum mysqlnd_zval_ptr_type point_type; +#ifdef ZTS + THREAD_T thread_id; +#endif +} mysqlnd_zval; + + +typedef struct st_mysqlnd_ndzval_list { + mysqlnd_zval **ptr_line; /* we allocate this, all are pointers to the block */ + mysqlnd_zval **last_added; /* this points to the ptr_line, and moves left-right. It's our stack */ +} mysqlnd_ndzval_list; + + +struct st_mysqlnd_zval_pcache { + mysqlnd_zval *block; + mysqlnd_zval *last_in_block; + mysqlnd_ndzval_list free_list; /* Fetch from here */ + +#ifdef ZTS + MUTEX_T LOCK_access; +#endif + unsigned int references; + + /* These are just for statistics and not used for operational purposes */ + unsigned int free_items; + unsigned int max_items; + + unsigned long get_hits; + unsigned long get_misses; + unsigned long put_hits; + unsigned long put_misses; +}; + +struct st_mysqlnd_thread_zval_pcache { + struct st_mysqlnd_zval_pcache *parent; + + unsigned int references; +#ifdef ZTS + THREAD_T thread_id; +#endif + mysqlnd_ndzval_list gc_list; /* GC these from time to time */ +}; + +#endif /* MYSQLND_PALLOC_H */ + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */ |