]> granicus.if.org Git - php/commitdiff
Save TSRMLS_FETCH()'s
authorZeev Suraski <zeev@php.net>
Mon, 30 Jul 2001 01:46:35 +0000 (01:46 +0000)
committerZeev Suraski <zeev@php.net>
Mon, 30 Jul 2001 01:46:35 +0000 (01:46 +0000)
TSRM/TSRM.c
TSRM/TSRM.h

index 121eb81c5dafef2a4da9119c23a12ae3d0d85141..cf9e3a3f79d4189f32b72a2faf31cd92959d4654 100644 (file)
@@ -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;
 
index 64c387eafd6c7c4438ff6ba66778d6f857a421f6..ffb977662d34dc8a0dc9b40d0acbe83966595937 100644 (file)
@@ -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)