MagickCore 7.0.10
memory.c File Reference
Include dependency graph for memory.c:

Go to the source code of this file.

Data Structures

struct  _DataSegmentInfo
 
struct  _WizardMemoryMethods
 
struct  _MemoryInfo
 
struct  _MemoryPool
 

Macros

#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 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)
 
#define AlignedExtent(size, alignment)    (((size)+((alignment)-1)) & ~((alignment)-1))
 

Typedefs

typedef struct _DataSegmentInfo DataSegmentInfo
 
typedef struct _WizardMemoryMethods WizardMemoryMethods
 
typedef struct _MemoryPool MemoryPool
 

Enumerations

enum  VirtualMemoryType { UndefinedVirtualMemory , AlignedVirtualMemory , MapVirtualMemory , UnalignedVirtualMemory }
 

Functions

WizardExport void * AcquireAlignedMemory (const size_t count, const size_t quantum)
 
WizardExport MemoryInfoAcquireVirtualMemory (const size_t count, const size_t quantum, ExceptionInfo *exception)
 
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 * GetVirtualMemoryBlob (const MemoryInfo *memory_info)
 
WizardExport void * RelinquishAlignedMemory (void *memory)
 
WizardExport MemoryInfoRelinquishVirtualMemory (MemoryInfo *memory_info)
 
WizardExport void * RelinquishWizardMemory (void *memory)
 
WizardExport void * ResetWizardMemory (void *memory, int c, 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
 

Macro Definition Documentation

◆ AlignedExtent

#define AlignedExtent (   size,
  alignment 
)     (((size)+((alignment)-1)) & ~((alignment)-1))

◆ BlockFooter

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

Definition at line 98 of file memory.c.

◆ BlockHeader

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

Definition at line 100 of file memory.c.

◆ BlockSize

#define BlockSize   4096

Definition at line 101 of file memory.c.

◆ BlockThreshold

#define BlockThreshold   1024

Definition at line 102 of file memory.c.

◆ MaxBlockExponent

#define MaxBlockExponent   16

Definition at line 103 of file memory.c.

◆ MaxBlocks

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

Definition at line 104 of file memory.c.

◆ MaxSegments

#define MaxSegments   1024

Definition at line 105 of file memory.c.

◆ MemoryGuard

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

Definition at line 106 of file memory.c.

◆ NextBlock

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

Definition at line 107 of file memory.c.

◆ NextBlockInList

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

Definition at line 108 of file memory.c.

◆ PreviousBlock

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

Definition at line 109 of file memory.c.

◆ PreviousBlockBit

#define PreviousBlockBit   0x01

Definition at line 110 of file memory.c.

◆ PreviousBlockInList

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

Definition at line 111 of file memory.c.

◆ SegmentSize

#define SegmentSize   (2*1024*1024)

Definition at line 112 of file memory.c.

◆ SizeMask

#define SizeMask   (~0x01)

Definition at line 113 of file memory.c.

◆ SizeOfBlock

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

Definition at line 114 of file memory.c.

Typedef Documentation

◆ DataSegmentInfo

◆ MemoryPool

typedef struct _MemoryPool MemoryPool

◆ WizardMemoryMethods

Enumeration Type Documentation

◆ VirtualMemoryType

Enumerator
UndefinedVirtualMemory 
AlignedVirtualMemory 
MapVirtualMemory 
UnalignedVirtualMemory 

Definition at line 119 of file memory.c.

Function Documentation

◆ AcquireAlignedMemory()

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

Definition at line 243 of file memory.c.

References AcquireWizardMemory(), AlignedExtent, CACHE_LINE_SIZE, and GetWizardPageSize().

Referenced by AcquireVirtualMemory().

◆ AcquireQuantumMemory()

◆ AcquireVirtualMemory()

◆ AcquireWizardMemory()

WizardExport void * AcquireWizardMemory ( const size_t  size)

Definition at line 586 of file memory.c.

References _WizardMemoryMethods::acquire_memory_handler, ActivateSemaphoreInfo(), _MemoryPool::allocation, _MemoryPool::blocks, LockSemaphoreInfo(), MaxBlocks, MaxSegments, memory_methods, _DataSegmentInfo::next, _DataSegmentInfo::previous, ResetWizardMemory(), _MemoryPool::segment_pool, SegmentSize, SizeMask, UnlockSemaphoreInfo(), and WizardFalse.

Referenced by AcquireAESInfo(), AcquireAlignedMemory(), AcquireAuthenticateInfo(), AcquireBZIPInfo(), AcquireChachaInfo(), AcquireCipherInfo(), AcquireConfigureCache(), AcquireCRC64Info(), AcquireEntropyInfo(), AcquireExceptionInfo(), AcquireFileInfo(), AcquireHashInfo(), AcquireHMACInfo(), AcquireKeyInfo(), AcquireKeyringInfo(), AcquireLogCache(), AcquireLZMAInfo(), AcquireMD5Info(), AcquireQuantumMemory(), AcquireRandomInfo(), AcquireSecretInfo(), AcquireSerpentInfo(), AcquireSHA1Info(), AcquireSHA2224Info(), AcquireSHA2256Info(), AcquireSHA2384Info(), AcquireSHA2512Info(), AcquireSHA3Info(), AcquireStringInfo(), AcquireTimerInfo(), AcquireTwofishInfo(), AcquireVirtualMemory(), AcquireZIPInfo(), AddChildToXMLTree(), AddValueToSplayTree(), AppendValueToLinkedList(), InsertValueInLinkedList(), InsertValueInSortedLinkedList(), LoadConfigureCache(), LoadLocaleCache(), LoadLogCache(), LoadMimeCache(), NewHashmap(), NewLinkedList(), NewSplayTree(), NewXMLTreeTag(), OpenBlob(), ParseInternalDoctype(), ParseProcessingInstructions(), PutEntryInHashmap(), ResizeWizardMemory(), ThrowException(), and WizardCreateThreadKey().

◆ CopyWizardMemory()

WizardExport void * CopyWizardMemory ( void *  destination,
const void *  source,
const size_t  size 
)

◆ DestroyWizardMemory()

◆ GetVirtualMemoryBlob()

WizardExport void * GetVirtualMemoryBlob ( const MemoryInfo memory_info)

Definition at line 911 of file memory.c.

References _MemoryInfo::blob, _MemoryInfo::signature, and WizardSignature.

◆ GetWizardMemoryMethods()

WizardExport void GetWizardMemoryMethods ( AcquireMemoryHandler acquire_memory_handler,
ResizeMemoryHandler resize_memory_handler,
DestroyMemoryHandler destroy_memory_handler 
)

◆ RelinquishAlignedMemory()

WizardExport void * RelinquishAlignedMemory ( void *  memory)

Definition at line 941 of file memory.c.

References RelinquishWizardMemory().

Referenced by RelinquishVirtualMemory().

◆ RelinquishVirtualMemory()

◆ RelinquishWizardMemory()

WizardExport void * RelinquishWizardMemory ( void *  memory)

Definition at line 1039 of file memory.c.

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

Referenced by access_utf8(), AcquireFileInfo(), AddPathToXMLTree(), BalanceSplayTree(), Base64Decode(), CanonicalXMLContent(), ClearLinkedList(), ConfigureFileToStringInfo(), DeleteNodeByValueFromSplayTree(), DeleteNodeFromSplayTree(), DestroyAESInfo(), DestroyAuthenticateInfo(), DestroyBlob(), DestroyBZIPInfo(), DestroyChachaInfo(), DestroyCipherInfo(), DestroyConfigureElement(), DestroyCRC64Info(), DestroyEntropyInfo(), DestroyExceptionElement(), DestroyExceptionInfo(), DestroyFileInfo(), DestroyHashInfo(), DestroyHashmap(), DestroyHMACInfo(), DestroyKeyInfo(), DestroyKeyringInfo(), DestroyLinkedList(), DestroyLocaleNode(), DestroyLogElement(), DestroyLZMAInfo(), DestroyMD5Info(), DestroyMimeElement(), DestroyRandomInfo(), DestroySecretInfo(), DestroySerpentInfo(), DestroySHA1Info(), DestroySHA2224Info(), DestroySHA2256Info(), DestroySHA2384Info(), DestroySHA2512Info(), DestroySHA3Info(), DestroySplayTree(), DestroyString(), DestroyStringInfo(), DestroyStringList(), DestroyTimerInfo(), DestroyTwofishInfo(), DestroyXMLTree(), DestroyXMLTreeAttributes(), DestroyXMLTreeRoot(), DestroyZIPInfo(), FileToBlob(), FileToStringInfo(), FileToXML(), fopen_utf8(), GetConfigureOptions(), GetConfigurePaths(), GetExecutionPath(), GetLocaleOptions(), GetPathTemplate(), GetXMLTreePath(), IncreaseHashmapCapacity(), InsertValueInSortedLinkedList(), IterateOverSplayTree(), ListConfigureInfo(), ListLocaleInfo(), ListLogInfo(), ListMimeInfo(), LoadConfigureCache(), LoadLocaleCache(), LoadLogCache(), LogWizardEventList(), open_utf8(), OpenBlob(), ParseInternalDoctype(), popen_utf8(), PutEntryInHashmap(), RelinquishAlignedMemory(), RelinquishBZIPMemory(), RelinquishLZMAMemory(), RelinquishVirtualMemory(), RelinquishZIPMemory(), remove_utf8(), RemoveElementByValueFromLinkedList(), RemoveElementFromLinkedList(), RemoveEntryFromHashmap(), RemoveLastElementFromLinkedList(), RemoveNodeByValueFromSplayTree(), RemoveNodeFromSplayTree(), rename_utf8(), ResetSplayTree(), ResizeQuantumMemory(), ResizeWizardMemory(), stat_utf8(), StringToArgv(), WizardDeleteThreadKey(), and WizardsToolkitGenesis().

◆ ResetWizardMemory()

◆ ResizeQuantumMemory()

◆ ResizeWizardMemory()

◆ SetWizardMemoryMethods()

WizardExport void SetWizardMemoryMethods ( AcquireMemoryHandler  acquire_memory_handler,
ResizeMemoryHandler  resize_memory_handler,
DestroyMemoryHandler  destroy_memory_handler 
)

Variable Documentation

◆ memory_methods

WizardMemoryMethods memory_methods
static
Initial value:
=
{
}
void *(*)(*) *(* ResizeMemoryHandler)(void *, size_t) wizard_alloc_size(2)
Definition memory_.h:31
void *(* AcquireMemoryHandler)(size_t) wizard_alloc_size(1)
Definition memory_.h:29
void *(*)(* DestroyMemoryHandler)(void *)
Definition memory_.h:30

Definition at line 194 of file memory.c.

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