memory.c File Reference

#include "wizard/studio.h"
#include "wizard/blob.h"
#include "wizard/blob-private.h"
#include "wizard/exception.h"
#include "wizard/exception-private.h"
#include "wizard/memory_.h"
#include "wizard/semaphore.h"
#include "wizard/string_.h"
Include dependency graph for memory.c:

Go to the source code of this file.

Data Structures

struct  _DataSegmentInfo
struct  _MemoryInfo
struct  _WizardMemoryMethods

Defines

#define BlockFooter(block, size)   ((size_t *) ((char *) (block)+(size)-2*sizeof(size_t)))
#define BlockHeader(block)   ((size_t *) (block)-1)
#define BlockSize   4096
#define BlockThreshold   1024
#define AlignedSize   (16*sizeof(void *))
#define MaxBlockExponent   16
#define MaxBlocks   ((BlockThreshold/(4*sizeof(size_t)))+MaxBlockExponent+1)
#define MaxSegments   1024
#define MemoryGuard   ((0xdeadbeef << 31)+0xdeafdeed)
#define NextBlock(block)   ((char *) (block)+SizeOfBlock(block))
#define NextBlockInList(block)   (*(void **) (block))
#define PreviousBlock(block)   ((char *) (block)-(*((size_t *) (block)-2)))
#define PreviousBlockBit   0x01
#define PreviousBlockInList(block)   (*((void **) (block)+1))
#define SegmentSize   (2*1024*1024)
#define SizeMask   (~0x01)
#define SizeOfBlock(block)   (*BlockHeader(block) & SizeMask)

Typedefs

typedef struct _DataSegmentInfo DataSegmentInfo
typedef struct _MemoryInfo MemoryInfo
typedef struct _WizardMemoryMethods WizardMemoryMethods

Functions

WizardExport void * AcquireAlignedMemory (const size_t count, const size_t quantum)
WizardExport void * AcquireWizardMemory (const size_t size)
WizardExport void * AcquireQuantumMemory (const size_t count, const size_t quantum)
WizardExport void * CopyWizardMemory (void *destination, const void *source, const size_t size)
WizardExport void DestroyWizardMemory (void)
WizardExport void GetWizardMemoryMethods (AcquireMemoryHandler *acquire_memory_handler, ResizeMemoryHandler *resize_memory_handler, DestroyMemoryHandler *destroy_memory_handler)
WizardExport void * RelinquishAlignedMemory (void *memory)
WizardExport void * RelinquishWizardMemory (void *memory)
WizardExport void * ResetWizardMemory (void *memory, int byte, const size_t size)
WizardExport void * ResizeWizardMemory (void *memory, const size_t size)
WizardExport void * ResizeQuantumMemory (void *memory, const size_t count, const size_t quantum)
WizardExport void SetWizardMemoryMethods (AcquireMemoryHandler acquire_memory_handler, ResizeMemoryHandler resize_memory_handler, DestroyMemoryHandler destroy_memory_handler)

Variables

static WizardMemoryMethods memory_methods

Define Documentation

#define AlignedSize   (16*sizeof(void *))

Definition at line 73 of file memory.c.

Referenced by AcquireAlignedMemory().

#define BlockFooter ( block,
size   )     ((size_t *) ((char *) (block)+(size)-2*sizeof(size_t)))

Definition at line 68 of file memory.c.

Referenced by RelinquishWizardMemory().

#define BlockHeader ( block   )     ((size_t *) (block)-1)

Definition at line 70 of file memory.c.

Referenced by RelinquishWizardMemory().

#define BlockSize   4096

Definition at line 71 of file memory.c.

#define BlockThreshold   1024

Definition at line 72 of file memory.c.

#define MaxBlockExponent   16

Definition at line 74 of file memory.c.

#define MaxBlocks   ((BlockThreshold/(4*sizeof(size_t)))+MaxBlockExponent+1)

Definition at line 75 of file memory.c.

Referenced by AcquireWizardMemory().

#define MaxSegments   1024

Definition at line 76 of file memory.c.

Referenced by AcquireWizardMemory().

#define MemoryGuard   ((0xdeadbeef << 31)+0xdeafdeed)

Definition at line 77 of file memory.c.

#define NextBlock ( block   )     ((char *) (block)+SizeOfBlock(block))

Definition at line 78 of file memory.c.

Referenced by RelinquishWizardMemory().

#define NextBlockInList ( block   )     (*(void **) (block))

Definition at line 79 of file memory.c.

#define PreviousBlock ( block   )     ((char *) (block)-(*((size_t *) (block)-2)))

Definition at line 80 of file memory.c.

Referenced by RelinquishWizardMemory().

#define PreviousBlockBit   0x01

Definition at line 81 of file memory.c.

Referenced by RelinquishWizardMemory().

#define PreviousBlockInList ( block   )     (*((void **) (block)+1))

Definition at line 82 of file memory.c.

#define SegmentSize   (2*1024*1024)

Definition at line 83 of file memory.c.

Referenced by AcquireWizardMemory().

#define SizeMask   (~0x01)

Definition at line 84 of file memory.c.

Referenced by AcquireWizardMemory(), and RelinquishWizardMemory().

#define SizeOfBlock ( block   )     (*BlockHeader(block) & SizeMask)

Definition at line 85 of file memory.c.

Referenced by RelinquishWizardMemory().


Typedef Documentation

typedef struct _MemoryInfo MemoryInfo

Function Documentation

WizardExport void* AcquireAlignedMemory ( const size_t  count,
const size_t  quantum 
)
WizardExport void* AcquireQuantumMemory ( const size_t  count,
const size_t  quantum 
)
WizardExport void* AcquireWizardMemory ( const size_t  size  ) 
WizardExport void* CopyWizardMemory ( void *  destination,
const void *  source,
const size_t  size 
)
WizardExport void DestroyWizardMemory ( void   ) 
WizardExport void GetWizardMemoryMethods ( AcquireMemoryHandler acquire_memory_handler,
ResizeMemoryHandler resize_memory_handler,
DestroyMemoryHandler destroy_memory_handler 
)
WizardExport void* RelinquishAlignedMemory ( void *  memory  ) 

Definition at line 708 of file memory.c.

Referenced by DestroySemaphoreInfo().

WizardExport void* RelinquishWizardMemory ( void *  memory  ) 

Definition at line 739 of file memory.c.

References BlockFooter, BlockHeader, _WizardMemoryMethods::destroy_memory_handler, LockSemaphoreInfo(), memory_methods, NextBlock, PreviousBlock, PreviousBlockBit, SizeMask, SizeOfBlock, and UnlockSemaphoreInfo().

Referenced by AcquireFileInfo(), AcquireUniqueFileResource(), AddPathToXMLTree(), BalanceSplayTree(), Base64Decode(), CanonicalXMLContent(), ClearLinkedList(), CloneString(), ConfigureFileToStringInfo(), DeleteNodeByValueFromSplayTree(), DeleteNodeFromSplayTree(), DestroyAESInfo(), DestroyAuthenticateInfo(), DestroyBlob(), DestroyBZIPInfo(), DestroyCipherInfo(), DestroyConfigureElement(), DestroyCRC64Info(), DestroyEntropyInfo(), DestroyExceptionElement(), DestroyExceptionInfo(), DestroyFileInfo(), DestroyHashInfo(), DestroyHashmap(), DestroyHMACInfo(), DestroyKeyInfo(), DestroyKeyringInfo(), DestroyLinkedList(), DestroyLogElement(), DestroyMD5Info(), DestroyMimeElement(), DestroyRandomInfo(), DestroySecretInfo(), DestroySerpentInfo(), DestroySHA1Info(), DestroySHA224Info(), DestroySHA256Info(), DestroySHA384Info(), DestroySHA512Info(), DestroySplayTree(), DestroyString(), DestroyStringInfo(), DestroyStringList(), DestroyTimerInfo(), DestroyTwofishInfo(), DestroyXMLTree(), DestroyXMLTreeAttributes(), DestroyZIPInfo(), FileToBlob(), GetConfigureOptions(), GetConfigurePaths(), GetExecutionPath(), GetPathTemplate(), GetXMLTreePath(), IncreaseHashmapCapacity(), InsertValueInSortedLinkedList(), IterateOverSplayTree(), ListConfigureInfo(), ListLogInfo(), ListMimeInfo(), LoadConfigureList(), LoadLogList(), LogWizardEventList(), OpenBlob(), ParseInternalDoctype(), PutEntryInHashmap(), RelinquishBZIPMemory(), RelinquishZIPMemory(), RemoveElementByValueFromLinkedList(), RemoveElementFromLinkedList(), RemoveEntryFromHashmap(), RemoveLastElementFromLinkedList(), RemoveNodeByValueFromSplayTree(), RemoveNodeFromSplayTree(), ResetSplayTree(), ResizeQuantumMemory(), ResizeWizardMemory(), StringToArgv(), WizardDeleteThreadKey(), WizardOpenStream(), and WizardsToolkitGenesis().

WizardExport void* ResetWizardMemory ( void *  memory,
int  byte,
const size_t  size 
)

Definition at line 811 of file memory.c.

Referenced by AcquireAESInfo(), AcquireAuthenticateInfo(), AcquireBZIPInfo(), AcquireCipherInfo(), AcquireCRC64Info(), AcquireEntropyInfo(), AcquireExceptionInfo(), AcquireFileInfo(), AcquireHashInfo(), AcquireHMACInfo(), AcquireKeyInfo(), AcquireKeyringInfo(), AcquireMD5Info(), AcquireRandomInfo(), AcquireSecretInfo(), AcquireSerpentInfo(), AcquireSHA1Info(), AcquireSHA224Info(), AcquireSHA256Info(), AcquireSHA384Info(), AcquireSHA512Info(), AcquireStringInfo(), AcquireTwofishInfo(), AcquireWizardMemory(), AcquireZIPInfo(), AddChildToXMLTree(), AllocateSemaphoreInfo(), DecipherAESBlock(), DecipherCBCMode(), DecipherCFBMode(), DecipherCTRMode(), DecipherOFBMode(), DestroyRandomInfo(), DestroyWizardMemory(), EncipherAESBlock(), EncipherCBCMode(), EncipherCFBMode(), EncipherCTRMode(), EncipherOFBMode(), FinalizeMD5(), FinalizeSHA1(), FinalizeSHA224(), FinalizeSHA256(), FinalizeSHA384(), FinalizeSHA512(), FinalizeSignature(), GetBlobInfo(), GetExceptionInfo(), GetPhrase(), GetSignatureInfo(), HexStringToStringInfo(), IncreaseHashmapCapacity(), LoadConfigureList(), LoadConfigureLists(), LoadLogList(), LoadLogLists(), LoadMimeList(), NewHashmap(), NewLinkedList(), NewSplayTree(), NewXMLTreeTag(), OpenBlob(), ParseWizardTime(), PrintKeyringProperties(), ResetStringInfo(), SetAESKey(), SetStringInfo(), SetTwofishKey(), ThrowException(), TransformSHA1(), TransformSHA224(), TransformSHA256(), TransformSHA384(), TransformSHA512(), and UpdateMD5().

WizardExport void* ResizeQuantumMemory ( void *  memory,
const size_t  count,
const size_t  quantum 
)
WizardExport void* ResizeWizardMemory ( void *  memory,
const size_t  size 
)
WizardExport void SetWizardMemoryMethods ( AcquireMemoryHandler  acquire_memory_handler,
ResizeMemoryHandler  resize_memory_handler,
DestroyMemoryHandler  destroy_memory_handler 
)

Variable Documentation

Generated by  doxygen 1.6.2-20100208