Changeset 7

Show
Ignore:
Timestamp:
07/22/04 17:27:16 (10 years ago)
Author:
george
Message:

disable linking against mm unless shm support is compiled in

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/config.m4

    r1 r7  
    2626  PHP_ADD_INCLUDE($FASTXSL_DIR/include/libxml2) 
    2727  PHP_ADD_INCLUDE($FASTXSL_DIR/include) 
    28  
    29   PHP_ADD_LIBRARY_WITH_PATH(mm,   $FASTXSL_DIR/lib, FASTXSL_SHARED_LIBADD) 
     28  AC_MSG_CHECKING(whether to support libmm based shared template cache) 
     29  AC_ARG_ENABLE(libmm, 
     30  [  --enable-libmm Enable libmm based shared template cache],[ 
     31    if test "$enableval" = "yes" ; then 
     32      AC_DEFINE(FASTXSL_MM, 1, [ ]) 
     33      AC_MSG_RESULT(yes) 
     34      PHP_ADD_LIBRARY_WITH_PATH(mm,   $FASTXSL_DIR/lib, FASTXSL_SHARED_LIBADD) 
     35    else 
     36      AC_MSG_RESULT(no) 
     37    fi 
     38  ],[ 
     39    AC_MSG_RESULT(no) 
     40  ]) 
    3041  PHP_ADD_LIBRARY_WITH_PATH(xslt, $FASTXSL_DIR/lib, FASTXSL_SHARED_LIBADD) 
    3142  PHP_ADD_LIBRARY_WITH_PATH(xml2, $FASTXSL_DIR/lib, FASTXSL_SHARED_LIBADD) 
  • trunk/fastxsl.c

    r6 r7  
    2929#include <libxml/xinclude.h> 
    3030#include <libxml/catalog.h> 
     31#include <libxml/xpathInternals.h> 
     32#include <libxml/xpath.h> 
    3133#include <libxslt/xslt.h> 
    3234#include <libxslt/xsltInternals.h> 
     
    3436#include <libxslt/xsltutils.h> 
    3537 
     38#ifdef FASTXSL_MM 
    3639#include <mm.h> 
     40#endif 
    3741#include <sys/types.h> 
    3842#include <unistd.h> 
     
    6064 
    6165        if (shared) { 
     66#ifdef FASTXSL_MM 
    6267                if (shared == FASTXSL_SHARED_ALLOC) { 
    6368                        wrapper = (php_ss_wrapper *) mm_calloc(FASTXSL_G(cache)->mm, 1, sizeof(php_ss_wrapper)); 
     
    6671                } 
    6772                wrapper->persistant = 1; 
     73#else 
     74        wrapper = (php_ss_wrapper *) calloc(1, sizeof(php_ss_wrapper)); 
     75        wrapper->persistant = 1; 
     76#endif 
    6877        } else { 
    6978                wrapper = (php_ss_wrapper *) calloc(1, sizeof(php_ss_wrapper)); 
     
    8796static xmlStrdupFunc  strdup_ptr; 
    8897 
     98#ifdef FASTXSL_MM 
    8999static void 
    90100ShmCache_Free(void *ptr) 
     
    162172        return newstring; 
    163173} 
     174#endif 
    164175 
    165176static void 
     
    187198} 
    188199 
     200#ifdef FASTXSL_MM 
    189201static void 
    190202ShmCache_UseAllocationFunctions(void) 
     
    192204        xmlMemSetup(ShmCache_Free, ShmCache_Malloc, ShmCache_Realloc, ShmCache_Strdup); 
    193205} 
     206#endif 
    194207 
    195208static void 
     
    205218} 
    206219 
     220#ifdef FASTXSL_MM 
    207221static php_ss_wrapper * 
    208222ShmCache_Stylesheet_ParseAndStore(char *filename, size_t filename_len, int mtime TSRMLS_DC) 
     
    250264        } 
    251265} 
     266#endif 
    252267 
    253268static php_ss_wrapper * 
     
    256271        php_ss_wrapper *wrapper; 
    257272 
    258         wrapper = SS_Wrapper_Alloc(FASTXSL_PRM_ALLOC TSRMLS_CC); 
     273        wrapper = (php_ss_wrapper *) SS_Wrapper_Alloc(FASTXSL_PRM_ALLOC TSRMLS_CC); 
    259274 
    260275        wrapper->ss = xsltParseStylesheetFile(filename); 
     
    305320/* {{{ proto array fastxsl_shmcache_getstatistics(void) 
    306321   Get an array of statistics regarding the documents in the shared memory cache */ 
     322#ifdef FASTXSL_MM 
    307323PHP_FUNCTION(fastxsl_shmcache_getstatistics) 
    308324{ 
     
    347363        mm_unlock(FASTXSL_G(cache)->mm); 
    348364} 
     365#endif 
    349366/* }}} */ 
    350367 
     
    362379        } 
    363380 
    364         wrapper = SS_Wrapper_Alloc(0 TSRMLS_CC); 
     381        wrapper = (php_ss_wrapper *) SS_Wrapper_Alloc(0 TSRMLS_CC); 
    365382        wrapper->ss = xsltParseStylesheetFile((const xmlChar *) filename); 
    366383        if (!wrapper->ss) { 
     
    467484/* {{{ proto resource fastxsl_shmcache_transform(string filename, resource xmldoc[, array parameters]) 
    468485   Transform a XML document, "xmldoc", by a XSL stylesheet "filename" with transform "parameters." */  
     486#ifdef FASTXSL_MM 
    469487PHP_FUNCTION(fastxsl_shmcache_transform) 
    470488{ 
     
    543561        ZEND_REGISTER_RESOURCE(return_value, result_wrapper, le_fastxsl_document); 
    544562} 
     563#endif 
    545564/* }}} */ 
    546565 
     
    749768/* {{{ proto string fastxsl_shmcache_tostring(string filename, resource xmldoc) 
    750769   Return the string representation of xmldoc which is the result of an XSLT transformation on filename */ 
     770#ifdef FASTXSL_MM 
    751771PHP_FUNCTION(fastxsl_shmcache_tostring) 
    752772{ 
     
    781801        } 
    782802} 
     803#endif 
    783804/* }}} */ 
    784805 
     
    821842        PHP_FE(fastxsl_xml_parsefile,                NULL) 
    822843        PHP_FE(fastxsl_xml_parsestring,              NULL) 
     844#ifdef FASTXSL_MM 
    823845        PHP_FE(fastxsl_shmcache_transform,           NULL) 
     846        PHP_FE(fastxsl_shmcache_tostring,            NULL) 
     847        PHP_FE(fastxsl_shmcache_getstatistics,       NULL) 
     848#endif 
    824849        PHP_FE(fastxsl_prmcache_transform,           NULL) 
    825850        PHP_FE(fastxsl_nocache_transform,            NULL) 
    826851        PHP_FE(fastxsl_nocache_profile,              NULL) 
    827852        PHP_FE(fastxsl_nocache_tostring,             NULL) 
    828         PHP_FE(fastxsl_shmcache_tostring,            NULL) 
    829853        PHP_FE(fastxsl_prmcache_tostring,            NULL) 
    830         PHP_FE(fastxsl_shmcache_getstatistics,       NULL) 
    831854        PHP_FE(fastxsl_prmcache_getstatistics,       NULL) 
    832855        {NULL, NULL, NULL} 
     
    915938 * Allocators for the fl_hash storage  
    916939 */ 
     940#ifdef FASTXSL_MM 
    917941static FL_Allocator mm_allocators = {ShmCache_Free, ShmCache_Malloc, ShmCache_Calloc}; 
     942#endif 
    918943static FL_Allocator normal_allocators = {free, malloc, calloc}; 
    919944 
     
    937962                        return; 
    938963                } 
    939  
     964#ifdef FASTXSL_MM 
    940965                mm_lock(cache->mm, MM_LOCK_RW); 
    941966                fl_hash_free(cache->table); 
     
    943968 
    944969                mm_destroy(cache->mm); 
    945  
     970#endif 
    946971                fl_hash_free(cache->prmtable); 
    947972        } 
     
    962987        int i; 
    963988         
    964         tctxt = xsltXPathGetTransformContext(ctxt); 
     989        tctxt = (xsltTransformContextPtr) xsltXPathGetTransformContext(ctxt); 
    965990        if (tctxt == NULL) { 
    966991                xsltGenericError(xsltGenericErrorContext, 
     
    10751100         
    10761101        le_fastxsl_stylesheet = zend_register_list_destructors_ex(SS_Wrapper_Dtor, NULL,  
    1077                        le_fastxsl_stylesheet_name, module_number); 
     1102        le_fastxsl_stylesheet_name, module_number); 
    10781103        le_fastxsl_document   = zend_register_list_destructors_ex(XD_Wrapper_Dtor, NULL,  
    10791104                        le_fastxsl_document_name,   module_number); 
     
    10871112                                           Stream_XmlWrite_WriteWrapper, Stream_CloseWrapper); 
    10881113         
    1089  
     1114#ifdef FASTXSL_MM 
    10901115        if (!sprintf(euid, "%d", geteuid())) { 
    10911116                return FAILURE; 
     
    11091134        FASTXSL_G(cache)->table = fl_hash_new(&mm_allocators, NULL); 
    11101135        mm_unlock(FASTXSL_G(cache)->mm); 
     1136#endif 
    11111137        FASTXSL_G(cache)->prmtable = fl_hash_new(&normal_allocators, NULL); 
    11121138         
  • trunk/php_fastxsl.h

    r6 r7  
    3535#include <libxslt/xsltutils.h> 
    3636 
     37#ifdef FASTXSL_MM 
    3738#include <mm.h> 
     39#endif 
     40 
    3841#include <sys/types.h> 
    3942#include <unistd.h> 
     
    5962 
    6063typedef struct { 
     64#ifdef FASTXSL_MM 
    6165        MM   *mm; 
     66#endif 
    6267        FL_Hash *table; 
    6368        pid_t owner;