You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
247 lines
11 KiB
247 lines
11 KiB
* Summary: interface for the memory allocator |
|
* Description: provides interfaces for the memory allocator, |
|
* including debugging capabilities. |
|
* |
|
* Copy: See Copyright for the status of this software. |
|
* |
|
* Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. |
|
|
|
/if not defined(DEBUG_MEMORY_ALLOC__) |
|
/define DEBUG_MEMORY_ALLOC__ |
|
|
|
/include "libxmlrpg/xmlversion" |
|
/include "libxmlrpg/xmlTypesC" |
|
|
|
* DEBUG_MEMORY: |
|
* |
|
* DEBUG_MEMORY replaces the allocator with a collect and debug |
|
* shell to the libc allocator. |
|
* DEBUG_MEMORY should only be activated when debugging |
|
* libxml i.e. if libxml has been configured with --with-debug-mem too. |
|
|
|
* /define DEBUG_MEMORY_FREED |
|
* /define DEBUG_MEMORY_LOCATION |
|
|
|
/if defined(DEBUG) |
|
/if not defined(DEBUG_MEMORY) |
|
/define DEBUG_MEMORY |
|
/endif |
|
/endif |
|
|
|
* DEBUG_MEMORY_LOCATION: |
|
* |
|
* DEBUG_MEMORY_LOCATION should be activated only when debugging |
|
* libxml i.e. if libxml has been configured with --with-debug-mem too. |
|
|
|
/if defined(DEBUG_MEMORY_LOCATION) |
|
/endif |
|
|
|
* The XML memory wrapper support 4 basic overloadable functions. |
|
|
|
* xmlFreeFunc: |
|
* @mem: an already allocated block of memory |
|
* |
|
* Signature for a free() implementation. |
|
|
|
d xmlFreeFunc s * based(######typedef######) |
|
d procptr |
|
|
|
* xmlMallocFunc: |
|
* @size: the size requested in bytes |
|
* |
|
* Signature for a malloc() implementation. |
|
* |
|
* Returns a pointer to the newly allocated block or NULL in case of error. |
|
|
|
d xmlMallocFunc s * based(######typedef######) |
|
d procptr |
|
|
|
* xmlReallocFunc: |
|
* @mem: an already allocated block of memory |
|
* @size: the new size requested in bytes |
|
* |
|
* Signature for a realloc() implementation. |
|
* |
|
* Returns a pointer to the newly reallocated block or NULL in case of error. |
|
|
|
d xmlReallocFunc s * based(######typedef######) |
|
d procptr |
|
|
|
* xmlStrdupFunc: |
|
* @str: a zero terminated string |
|
* |
|
* Signature for an strdup() implementation. |
|
* |
|
* Returns the copy of the string or NULL in case of error. |
|
|
|
d xmlStrdupFunc s * based(######typedef######) |
|
d procptr |
|
|
|
* The 5 interfaces used for all memory handling within libxml. |
|
* Since indirect calls are only supported via a based prototype, |
|
* storage is accessed via functions. |
|
|
|
d get_xmlFree pr extproc('__get_xmlFree') |
|
d like(xmlFreeFunc) |
|
|
|
d set_xmlFree pr extproc('__set_xmlFree') |
|
d func value like(xmlFreeFunc) |
|
|
|
d xmlFree pr extproc('__call_xmlFree') |
|
d mem * value void * |
|
|
|
d get_xmlMalloc pr extproc('__get_xmlMalloc') |
|
d like(xmlMallocFunc) |
|
|
|
d set_xmlMalloc pr extproc('__set_xmlMalloc') |
|
d func value like(xmlMallocFunc) |
|
|
|
d xmlMalloc pr * extproc('__call_xmlMalloc') void * |
|
d size value like(xmlCsize_t) |
|
|
|
d get_xmlMallocAtomic... |
|
d pr extproc('__get_xmlMallocAtomic') |
|
d like(xmlMallocFunc) |
|
|
|
d set_xmlMallocAtomic... |
|
d pr extproc('__set_xmlMallocAtomic') |
|
d func value like(xmlMallocFunc) |
|
|
|
d xmlMallocAtomic... |
|
d pr * extproc('__call_xmlMallocAtomic') void * |
|
d size value like(xmlCsize_t) |
|
|
|
d get_xmlRealloc pr extproc('__get_xmlRealloc') |
|
d like(xmlReallocFunc) |
|
|
|
d set_xmlRealloc pr extproc('__set_xmlRealloc') |
|
d func value like(xmlReallocFunc) |
|
|
|
d xmlRealloc pr * extproc('__call_xmlRealloc') void * |
|
d mem * value void * |
|
d size value like(xmlCsize_t) |
|
|
|
d get_xmlMemStrdup... |
|
d pr extproc('__get_xmlMemStrdup') |
|
d like(xmlStrdupFunc) |
|
|
|
d set_xmlMemStrdup... |
|
d pr extproc('__set_xmlMemstrdup') |
|
d func value like(xmlStrdupFunc) |
|
|
|
d xmlMemStrdup pr * extproc('__call_xmlMemStrdup') void * |
|
d str * value options(*string) const char * |
|
|
|
* The way to overload the existing functions. |
|
* The xmlGc function have an extra entry for atomic block |
|
* allocations useful for garbage collected memory allocators |
|
|
|
d xmlMemSetup pr extproc('xmlMemSetup') |
|
d like(xmlCint) |
|
d freeFunc value like(xmlFreeFunc) |
|
d mallocFunc value like(xmlMallocFunc) |
|
d reallocFunc value like(xmlReallocFunc) |
|
d strdupFunc value like(xmlStrdupFunc) |
|
|
|
d xmlMemGet pr extproc('xmlMemGet') |
|
d like(xmlCint) |
|
d freeFunc like(xmlFreeFunc) |
|
d mallocFunc like(xmlMallocFunc) |
|
d reallocFunc like(xmlReallocFunc) |
|
d strdupFunc like(xmlStrdupFunc) |
|
|
|
d xmlGcMemSetup pr extproc('xmlGcMemSetup') |
|
d like(xmlCint) |
|
d freeFunc value like(xmlFreeFunc) |
|
d mallocFunc value like(xmlMallocFunc) |
|
d mallocAtomicFunc... |
|
d value like(xmlMallocFunc) |
|
d reallocFunc value like(xmlReallocFunc) |
|
d strdupFunc value like(xmlStrdupFunc) |
|
|
|
d xmlGcMemGet pr extproc('xmlGcMemGet') |
|
d like(xmlCint) |
|
d freeFunc like(xmlFreeFunc) |
|
d mallocFunc like(xmlMallocFunc) |
|
d mallocAtomicFunc... |
|
d like(xmlMallocFunc) |
|
d reallocFunc like(xmlReallocFunc) |
|
d strdupFunc like(xmlStrdupFunc) |
|
|
|
* Initialization of the memory layer. |
|
|
|
d xmlInitMemory pr extproc('xmlInitMemory') |
|
d like(xmlCint) |
|
|
|
* Cleanup of the memory layer. |
|
|
|
d xmlCleanupMemory... |
|
d pr extproc('xmlCleanupMemory') |
|
|
|
* These are specific to the XML debug memory wrapper. |
|
|
|
d xmlMemUsed pr extproc('xmlMemUsed') |
|
d like(xmlCint) |
|
|
|
d xmlMemBlocks pr extproc('xmlMemBlocks') |
|
d like(xmlCint) |
|
|
|
d xmlMemDisplay pr extproc('xmlMemDisplay') |
|
d fp * value FILE * |
|
|
|
d xmlMmDisplayLast... |
|
d pr extproc('xmlMemDisplayLast') |
|
d fp * value FILE * |
|
d nbBytes value like(xmlClong) |
|
|
|
d xmlMemShow pr extproc('xmlMemShow') |
|
d fp * value FILE * |
|
d nr value like(xmlCint) |
|
|
|
d xmlMemoryDump pr extproc('xmlMemoryDump') |
|
|
|
d xmlMemMalloc pr * extproc('xmlMemMalloc') void * |
|
d size value like(xmlCsize_t) |
|
|
|
d xmlMemRealloc pr * extproc('xmlMemRealloc') void * |
|
d ptr * value void * |
|
d size value like(xmlCsize_t) |
|
|
|
d xmlMemFree pr extproc('xmlMemFree') |
|
d ptr * value void * |
|
|
|
d xmlMemoryStrdup... |
|
d pr * extproc('xmlMemoryStrdup') char * |
|
d str * value options(*string) const char * |
|
|
|
d xmlMallocLoc pr * extproc('xmlMallocLoc') void * |
|
d size value like(xmlCsize_t) |
|
d file * value options(*string) const char * |
|
d line value like(xmlCint) |
|
|
|
d xmlReallocLoc pr * extproc('xmlReallocLoc') void * |
|
d ptr * value void * |
|
d size value like(xmlCsize_t) |
|
d file * value options(*string) const char * |
|
d line value like(xmlCint) |
|
|
|
d xmlMallocAtomicLoc... |
|
d pr * extproc('xmlMallocAtomicLoc') void * |
|
d size value like(xmlCsize_t) |
|
d file * value options(*string) const char * |
|
d line value like(xmlCint) |
|
|
|
d xmlMemStrdupLoc... |
|
d pr * extproc('xmlMemStrdupLoc') char * |
|
d str * value options(*string) const char * |
|
d file * value options(*string) const char * |
|
d line value like(xmlCint) |
|
|
|
/if not defined(XML_GLOBALS_H) |
|
/if not defined(XML_THREADS_H__) |
|
/include "libxmlrpg/threads" |
|
/include "libxmlrpg/globals" |
|
/endif |
|
/endif |
|
|
|
/endif DEBUG_MEMORY_ALLOC__
|
|
|