Data Structures | Defines | Typedefs | Functions | Variables

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"

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

static size_t WizardMax (const size_t x, const size_t y)
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 *))

Referenced by AcquireAlignedMemory().

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

Referenced by RelinquishWizardMemory().

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

Referenced by RelinquishWizardMemory().

#define BlockSize   4096
#define BlockThreshold   1024
#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))

Referenced by RelinquishWizardMemory().

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

Referenced by RelinquishWizardMemory().

#define PreviousBlockBit   0x01

Referenced by RelinquishWizardMemory().

#define PreviousBlockInList (   block  )     (*((void **) (block)+1))
#define SegmentSize   (2*1024*1024)
#define SizeMask   (~0x01)

Referenced by AcquireWizardMemory().

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

Referenced by RelinquishWizardMemory().


Typedef Documentation

typedef struct _MemoryInfo MemoryInfo

Function Documentation

WizardExport void* AcquireAlignedMemory ( const size_t  count,
const size_t  quantum 
)

References AlignedSize, and WizardMax().

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  ) 
WizardExport void* RelinquishWizardMemory ( void *  memory  ) 

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

Referenced by AcquireFileInfo(), 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(), DestroyLZMAInfo(), 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(), RelinquishLZMAMemory(), 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 
)

Referenced by AcquireAESInfo(), AcquireAuthenticateInfo(), AcquireBZIPInfo(), AcquireCipherInfo(), AcquireCRC64Info(), AcquireEntropyInfo(), AcquireExceptionInfo(), AcquireFileInfo(), AcquireHashInfo(), AcquireHMACInfo(), AcquireKeyInfo(), AcquireKeyringInfo(), AcquireLZMAInfo(), AcquireMD5Info(), AcquireRandomInfo(), AcquireSecretInfo(), AcquireSerpentInfo(), AcquireSHA1Info(), AcquireSHA224Info(), AcquireSHA256Info(), AcquireSHA384Info(), AcquireSHA512Info(), AcquireStringInfo(), AcquireTimerInfo(), 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(), IncreaseLZMA(), LoadConfigureList(), LoadConfigureLists(), LoadLogList(), LoadLogLists(), LoadMimeList(), NewHashmap(), NewLinkedList(), NewSplayTree(), NewXMLTreeTag(), OpenBlob(), ParseWizardTime(), PrintKeyringProperties(), ResetStringInfo(), RestoreLZMA(), 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 
)
static size_t WizardMax ( const size_t  x,
const size_t  y 
) [inline, static]

Referenced by AcquireAlignedMemory().


Variable Documentation

Initial value:
  {
    (AcquireMemoryHandler) malloc,
    (ResizeMemoryHandler) realloc,
    (DestroyMemoryHandler) free
  }

Referenced by AcquireWizardMemory(), DestroyWizardMemory(), GetWizardMemoryMethods(), RelinquishWizardMemory(), ResizeWizardMemory(), and SetWizardMemoryMethods().