diff options
author | Zeev Suraski <zeev@php.net> | 2001-07-30 01:46:35 +0000 |
---|---|---|
committer | Zeev Suraski <zeev@php.net> | 2001-07-30 01:46:35 +0000 |
commit | 0701d68f97a66e5435985fa495893b8a68c14533 (patch) | |
tree | b7de438760c143b91eb3204b26b9f2d7de236a1d /TSRM | |
parent | 0a382bd3dc80f639e54dc4dd2cb90a2a4c45ef2f (diff) | |
download | php-git-0701d68f97a66e5435985fa495893b8a68c14533.tar.gz |
Save TSRMLS_FETCH()'s
Diffstat (limited to 'TSRM')
-rw-r--r-- | TSRM/TSRM.c | 12 | ||||
-rw-r--r-- | TSRM/TSRM.h | 9 |
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) |