summaryrefslogtreecommitdiff
path: root/TSRM
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2001-07-30 01:46:35 +0000
committerZeev Suraski <zeev@php.net>2001-07-30 01:46:35 +0000
commit0701d68f97a66e5435985fa495893b8a68c14533 (patch)
treeb7de438760c143b91eb3204b26b9f2d7de236a1d /TSRM
parent0a382bd3dc80f639e54dc4dd2cb90a2a4c45ef2f (diff)
downloadphp-git-0701d68f97a66e5435985fa495893b8a68c14533.tar.gz
Save TSRMLS_FETCH()'s
Diffstat (limited to 'TSRM')
-rw-r--r--TSRM/TSRM.c12
-rw-r--r--TSRM/TSRM.h9
2 files changed, 13 insertions, 8 deletions
diff --git a/TSRM/TSRM.c b/TSRM/TSRM.c
index 121eb81c5d..cf9e3a3f79 100644
--- a/TSRM/TSRM.c
+++ b/TSRM/TSRM.c
@@ -51,8 +51,8 @@ static int resource_types_table_size;
static MUTEX_T tsmm_mutex; /* thread-safe memory manager mutex */
/* New thread handlers */
-static void (*tsrm_new_thread_begin_handler)();
-static void (*tsrm_new_thread_end_handler)();
+static tsrm_thread_begin_func_t tsrm_new_thread_begin_handler;
+static tsrm_thread_end_func_t tsrm_new_thread_end_handler;
/* Debug support */
int tsrm_error(int level, const char *format, ...);
@@ -254,7 +254,7 @@ static void allocate_new_resource(tsrm_tls_entry **thread_resources_ptr, THREAD_
#endif
if (tsrm_new_thread_begin_handler) {
- tsrm_new_thread_begin_handler(thread_id);
+ tsrm_new_thread_begin_handler(thread_id, &((*thread_resources_ptr)->storage));
}
for (i=0; i<id_count; i++) {
(*thread_resources_ptr)->storage[i] = (void *) malloc(resource_types_table[i].size);
@@ -266,7 +266,7 @@ static void allocate_new_resource(tsrm_tls_entry **thread_resources_ptr, THREAD_
tsrm_mutex_unlock(tsmm_mutex);
if (tsrm_new_thread_end_handler) {
- tsrm_new_thread_end_handler(thread_id);
+ tsrm_new_thread_end_handler(thread_id, &((*thread_resources_ptr)->storage));
}
}
@@ -509,7 +509,7 @@ TSRM_API int tsrm_mutex_unlock(MUTEX_T mutexp)
}
-TSRM_API void *tsrm_set_new_thread_begin_handler(void (*new_thread_begin_handler)(THREAD_T thread_id))
+TSRM_API void *tsrm_set_new_thread_begin_handler(tsrm_thread_begin_func_t new_thread_begin_handler)
{
void *retval = (void *) tsrm_new_thread_begin_handler;
@@ -518,7 +518,7 @@ TSRM_API void *tsrm_set_new_thread_begin_handler(void (*new_thread_begin_handler
}
-TSRM_API void *tsrm_set_new_thread_end_handler(void (*new_thread_end_handler)(THREAD_T thread_id))
+TSRM_API void *tsrm_set_new_thread_end_handler(tsrm_thread_end_func_t new_thread_end_handler)
{
void *retval = (void *) tsrm_new_thread_end_handler;
diff --git a/TSRM/TSRM.h b/TSRM/TSRM.h
index 64c387eafd..ffb977662d 100644
--- a/TSRM/TSRM.h
+++ b/TSRM/TSRM.h
@@ -98,6 +98,11 @@ TSRM_API void ts_free_id(ts_rsrc_id id);
#define TSRM_ERROR_LEVEL_ERROR 1
#define TSRM_ERROR_LEVEL_CORE 2
#define TSRM_ERROR_LEVEL_INFO 3
+
+typedef void (*tsrm_thread_begin_func_t)(THREAD_T thread_id, void ***tsrm_ls);
+typedef void (*tsrm_thread_end_func_t)(THREAD_T thread_id, void ***tsrm_ls);
+
+
TSRM_API int tsrm_error(int level, const char *format, ...);
TSRM_API void tsrm_error_set(int level, char *debug_filename);
@@ -108,8 +113,8 @@ TSRM_API void tsrm_mutex_free(MUTEX_T mutexp);
TSRM_API int tsrm_mutex_lock(MUTEX_T mutexp);
TSRM_API int tsrm_mutex_unlock(MUTEX_T mutexp);
-TSRM_API void *tsrm_set_new_thread_begin_handler(void (*new_thread_begin_handler)(THREAD_T thread_id));
-TSRM_API void *tsrm_set_new_thread_end_handler(void (*new_thread_end_handler)(THREAD_T thread_id));
+TSRM_API void *tsrm_set_new_thread_begin_handler(tsrm_thread_begin_func_t new_thread_begin_handler);
+TSRM_API void *tsrm_set_new_thread_end_handler(tsrm_thread_end_func_t new_thread_end_handler);
#define TSRM_SHUFFLE_RSRC_ID(rsrc_id) ((rsrc_id)+1)
#define TSRM_UNSHUFFLE_RSRC_ID(rsrc_id) ((rsrc_id)-1)