memory.c File Reference

#include "MagickCore/studio.h"
#include "MagickCore/blob.h"
#include "MagickCore/blob-private.h"
#include "MagickCore/exception.h"
#include "MagickCore/exception-private.h"
#include "MagickCore/memory_.h"
#include "MagickCore/memory-private.h"
#include "MagickCore/policy.h"
#include "MagickCore/resource_.h"
#include "MagickCore/semaphore.h"
#include "MagickCore/string_.h"
#include "MagickCore/string-private.h"
#include "MagickCore/utility-private.h"

Data Structures

struct  _DataSegmentInfo
struct  _MagickMemoryMethods
struct  _MemoryInfo
struct  _MemoryPool

Defines

#define BlockFooter(block, size)   ((size_t *) ((char *) (block)+(size)-2*sizeof(size_t)))
#define BlockHeader(block)   ((size_t *) (block)-1)
#define BlockThreshold   1024
#define MaxBlockExponent   16
#define MaxBlocks   ((BlockThreshold/(4*sizeof(size_t)))+MaxBlockExponent+1)
#define MaxSegments   1024
#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 AcquireAlignedMemory_Actual   AcquireAlignedMemory_POSIX

Typedefs

typedef struct _DataSegmentInfo DataSegmentInfo
typedef struct _MagickMemoryMethods MagickMemoryMethods
typedef struct _MemoryPool MemoryPool

Enumerations

enum  VirtualMemoryType { UndefinedVirtualMemory, AlignedVirtualMemory, MapVirtualMemory, UnalignedVirtualMemory }

Functions

static void * AcquireAlignedMemory_POSIX (const size_t size)
MagickExport void * AcquireAlignedMemory (const size_t count, const size_t quantum)
MagickExport void * AcquireMagickMemory (const size_t size)
MagickExport void * AcquireCriticalMemory (const size_t size)
MagickExport void * AcquireQuantumMemory (const size_t count, const size_t quantum)
MagickExport MemoryInfoAcquireVirtualMemory (const size_t count, const size_t quantum)
MagickExport void * CopyMagickMemory (void *magick_restrict destination, const void *magick_restrict source, const size_t size)
MagickExport void DestroyMagickMemory (void)
MagickExport void GetMagickMemoryMethods (AcquireMemoryHandler *acquire_memory_handler, ResizeMemoryHandler *resize_memory_handler, DestroyMemoryHandler *destroy_memory_handler)
MagickExport size_t GetMaxMemoryRequest (void)
MagickExport void * GetVirtualMemoryBlob (const MemoryInfo *memory_info)
MagickExport void * RelinquishAlignedMemory (void *memory)
MagickExport void * RelinquishMagickMemory (void *memory)
MagickExport MemoryInfoRelinquishVirtualMemory (MemoryInfo *memory_info)
MagickExport void * ResetMagickMemory (void *memory, int byte, const size_t size)
MagickPrivate void ResetMaxMemoryRequest (void)
MagickPrivate void ResetVirtualAnonymousMemory (void)
MagickExport void * ResizeMagickMemory (void *memory, const size_t size)
MagickExport void * ResizeQuantumMemory (void *memory, const size_t count, const size_t quantum)
MagickExport void SetMagickAlignedMemoryMethods (AcquireAlignedMemoryHandler acquire_aligned_memory_handler, RelinquishAlignedMemoryHandler relinquish_aligned_memory_handler)
MagickExport void SetMagickMemoryMethods (AcquireMemoryHandler acquire_memory_handler, ResizeMemoryHandler resize_memory_handler, DestroyMemoryHandler destroy_memory_handler)

Variables

static size_t max_memory_request = 0
static size_t virtual_anonymous_memory = 0
static MagickMemoryMethods memory_methods

Define Documentation

#define AcquireAlignedMemory_Actual   AcquireAlignedMemory_POSIX

Referenced by AcquireAlignedMemory().

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

Referenced by RelinquishMagickMemory().

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

Referenced by RelinquishMagickMemory().

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

Referenced by AcquireMagickMemory().

#define MaxSegments   1024

Referenced by AcquireMagickMemory().

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

Referenced by RelinquishMagickMemory().

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

Referenced by RelinquishMagickMemory().

#define PreviousBlockBit   0x01

Referenced by RelinquishMagickMemory().

#define PreviousBlockInList ( block   )     (*((void **) (block)+1))
#define SegmentSize   (2*1024*1024)

Referenced by AcquireMagickMemory().

#define SizeMask   (~0x01)
#define SizeOfBlock ( block   )     (*BlockHeader(block) & SizeMask)

Referenced by RelinquishMagickMemory().


Typedef Documentation

typedef struct _MemoryPool MemoryPool

Enumeration Type Documentation

Enumerator:
UndefinedVirtualMemory 
AlignedVirtualMemory 
MapVirtualMemory 
UnalignedVirtualMemory 

Function Documentation

MagickExport void* AcquireAlignedMemory ( const size_t  count,
const size_t  quantum 
)
static void* AcquireAlignedMemory_POSIX ( const size_t  size  )  [inline, static]

References CACHE_LINE_SIZE.

MagickExport void* AcquireCriticalMemory ( const size_t  size  ) 
MagickExport void* AcquireMagickMemory ( const size_t  size  ) 
MagickExport void* AcquireQuantumMemory ( const size_t  count,
const size_t  quantum 
)

References AcquireMagickMemory(), HeapOverflowSanityCheckGetSize(), and MagickFalse.

Referenced by AcquireContributionThreadSet(), AcquireFxInfo(), AcquireFxThreadSet(), AcquireHistogramThreadSet(), AcquireImageColormap(), AcquireKmeansThreadSet(), AcquireMagickMatrix(), AcquirePixelCacheNexus(), AcquirePixelChannelMap(), AcquirePixelListThreadSet(), AcquirePixelThreadSet(), AcquirePolygonThreadSet(), AcquireQuantumPixels(), AcquireRandomInfoThreadSet(), AcquireResampleFilterThreadSet(), AcquireSignatureInfo(), AcquireString(), AcquireStringInfo(), AcquireTransformThreadSet(), AcquireUniqueSymbolicLink(), AcquireVirtualMemory(), AnnotateImage(), AutoThresholdImage(), BalanceSplayTree(), Base64Decode(), Base64Encode(), BlobToStringInfo(), CLAHE(), Classify(), ClassifyImageColors(), CloneDrawInfo(), CloneImage(), ClonePixelCacheOnDisk(), ClonePixelInfo(), ClutImage(), ColorDecisionListImage(), CompareImagesLayers(), ConfigureFileToStringInfo(), ConnectedComponentsImage(), ConstantString(), ContrastStretchImage(), ConvertLatin1ToUTF8(), ConvertPathToPolygon(), ConvertPrimitiveToPath(), ConvertUTF16ToUTF8(), CopyDelegateFile(), CreateMagickThreadKey(), CustomStreamToImage(), DeleteImages(), DeskewImage(), DistortImage(), DrawDashPolygon(), EqualizeImage(), EscapeParenthesis(), EscapeString(), EvaluateImages(), ExpandFilenames(), ExportImagePixels(), FileToBlob(), FileToImage(), FileToXML(), FontToList(), GammaImage(), GaussJordanElimination(), GenerateCoefficients(), Get8BIMProperty(), GetCoderInfoList(), GetCoderList(), GetColorInfoList(), GetColorList(), GetCommandOptions(), GetConfigureInfoList(), GetConfigureList(), GetDelegateInfoList(), GetDelegateList(), GetExecutionPath(), GetEXIFProperty(), GetImageConvexHull(), GetImageDepth(), GetImageDistortion(), GetImageDistortions(), GetImageDynamicThreshold(), GetImageFeatures(), GetImageHistogram(), GetImageMinimumBoundingBox(), GetImageMoments(), GetImagePerceptualHash(), GetImageStatistics(), GetImageViewException(), GetIPTCProperty(), GetLocaleInfoList(), GetLocaleList(), GetLocationStatistics(), GetLogInfoList(), GetLogList(), GetMagicInfoList(), GetMagickInfoList(), GetMagickList(), GetMagicList(), GetMimeInfoList(), GetMimeList(), GetNodeInfo(), GetPathComponents(), GetPolicyInfoList(), GetPolicyList(), GetThresholdMapFile(), GetTypeInfoList(), GetTypeList(), GetVirtualPixelCacheNexus(), GradientImage(), HuffmanDecodeImage(), HuffmanEncodeImage(), IdentifyImage(), ImageListToArray(), ImagesToBlob(), ImagesToCustomStream(), ImageToBlob(), ImageToCustomStream(), ImageToFile(), ImportImagePixels(), InitializeIntervalTree(), InjectImageBlob(), IterateOverSplayTree(), KapurThreshold(), LinearStretchImage(), ListFiles(), LZWEncodeImage(), MontageImageList(), MorphologyPrimitive(), MotionBlurImage(), NewXMLTree(), OptimalTau(), OptimizeLayerFrames(), OTSUThreshold(), PackbitsEncodeImage(), ParseEntities(), ParseInternalDoctype(), ParseKernelArray(), ParseProcessingInstructions(), ReduceImageColors(), RenderMVGContent(), RotationalBlurImage(), SampleImage(), ScaleImage(), ScaleSpace(), SegmentImage(), SetFxSymbolValue(), SetGrayscaleImage(), SetImageDepth(), SetStringInfoLength(), SetXMLTreeAttribute(), SortColormapByIntensity(), sRGBTransformImage(), StreamImagePixels(), StringInfoToHexString(), StringInfoToString(), StringToArgv(), StringToArrayOfDoubles(), StringToStrings(), TraceBezier(), TraceStrokePolygon(), TransformsRGBImage(), WaveImage(), WaveletDenoiseImage(), XBestPixel(), XCommandWidget(), XFontBrowserWidget(), XGetPixelInfo(), XGetWindowImage(), XMakeImage(), and XMakeStandardColormap().

MagickExport MemoryInfo* AcquireVirtualMemory ( const size_t  count,
const size_t  quantum 
)
MagickExport void* CopyMagickMemory ( void *magick_restrict  destination,
const void *magick_restrict  source,
const size_t  size 
)
MagickExport void DestroyMagickMemory ( void   ) 
MagickExport void GetMagickMemoryMethods ( AcquireMemoryHandler acquire_memory_handler,
ResizeMemoryHandler resize_memory_handler,
DestroyMemoryHandler destroy_memory_handler 
)
MagickExport size_t GetMaxMemoryRequest ( void   ) 
MagickExport void* GetVirtualMemoryBlob ( const MemoryInfo memory_info  ) 
MagickExport void* RelinquishAlignedMemory ( void *  memory  ) 
MagickExport void* RelinquishMagickMemory ( void *  memory  ) 

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

Referenced by access_utf8(), AcquireCoderCache(), AcquireFxInfo(), AcquireMagickMatrix(), AcquirePolygonThreadSet(), AcquireUniqueSymbolicLink(), AddPathToXMLTree(), AnnotateImage(), AutoThresholdImage(), BalanceSplayTree(), Base64Decode(), CanonicalXMLContent(), CheckPrimitiveExtent(), CLAHE(), Classify(), ClearLinkedList(), ClonePixelCacheOnDisk(), ClutImage(), ColorDecisionListImage(), CompareImagesLayers(), ConnectedComponentsImage(), ContrastStretchImage(), ConvertPathToPolygon(), CopyDelegateFile(), CreateMagickThreadKey(), CustomStreamToImage(), DeleteImages(), DeleteMagickThreadKey(), DeleteNodeByValueFromSplayTree(), DeleteNodeFromSplayTree(), DeskewImage(), DestroyBlob(), DestroyCoderNode(), DestroyColorCube(), DestroyColorElement(), DestroyConfigureElement(), DestroyContributionThreadSet(), DestroyCubeInfo(), DestroyCustomStreamInfo(), DestroyDelegate(), DestroyDistributeCacheInfo(), DestroyDrawInfo(), DestroyEdge(), DestroyExceptionElement(), DestroyExceptionInfo(), DestroyFxInfo(), DestroyFxThreadSet(), DestroyHistogramThreadSet(), DestroyImage(), DestroyImageInfo(), DestroyImageView(), DestroyKernelInfo(), DestroyKmeansThreadSet(), DestroyLinkedList(), DestroyLocaleNode(), DestroyLogElement(), DestroyMagicElement(), DestroyMagickNode(), DestroyMatrixInfo(), DestroyMimeElement(), DestroyMontageInfo(), DestroyPixelCacheNexus(), DestroyPixelChannelMap(), DestroyPixelList(), DestroyPixelListThreadSet(), DestroyPixelThreadSet(), DestroyPolicyElement(), DestroyPolygonInfo(), DestroyPolygonThreadSet(), DestroyQuantizeInfo(), DestroyQuantumInfo(), DestroyQuantumPixels(), DestroyRandomInfo(), DestroyRandomInfoThreadSet(), DestroyRegistryNode(), DestroyResampleFilter(), DestroyResampleFilterThreadSet(), DestroyResizeFilter(), DestroySignatureInfo(), DestroySplayTree(), DestroyStreamInfo(), DestroyString(), DestroyStringInfo(), DestroyStringList(), DestroyThresholdMap(), DestroyTimerInfo(), DestroyTokenInfo(), DestroyTransformThreadSet(), DestroyTypeNode(), DestroyXMLTree(), DestroyXMLTreeAttributes(), DestroyXMLTreeRoot(), DestroyXResources(), DestroyXWidget(), DistortImage(), DrawDashPolygon(), DrawStrokePolygon(), EqualizeImage(), EvaluateImages(), ExpandFilenames(), ExportImagePixels(), ExternalDelegateCommand(), FileToBlob(), FileToImage(), FileToXML(), fopen_utf8(), FreeNodes(), GammaImage(), GaussJordanElimination(), GenerateCoefficients(), GetConfigureOptions(), GetConfigurePaths(), GetDelegateCommand(), GetExecutionPath(), GetHostname(), GetImageConvexHull(), GetImageDepth(), GetImageDistortion(), GetImageDistortions(), GetImageDynamicThreshold(), GetImageEntropy(), GetImageFeatures(), GetImageKurtosis(), GetImageMean(), GetImageMinimumBoundingBox(), GetImageMoments(), GetImagePerceptualHash(), GetImageStatistics(), GetLocaleOptions(), GetMagickHomeURL(), GetMagickProperty(), GetMultilineTypeMetrics(), GetMVGMacros(), GetNormalizedCrossCorrelationDistortion(), GetNumberColors(), GetPerceptualHashDistortion(), GetVirtualPixelCacheNexus(), GetXMLTreePath(), GetXMPProperty(), HuffmanDecodeImage(), HuffmanEncodeImage(), IdentifyImage(), ImagesToBlob(), ImagesToCustomStream(), ImageToBlob(), ImageToCustomStream(), ImageToFile(), ImportImagePixels(), InitializeIntervalTree(), InjectImageBlob(), InsertValueInSortedLinkedList(), InvokeDelegate(), IsOptionMember(), IterateOverSplayTree(), KapurThreshold(), LinearStretchImage(), ListCoderInfo(), ListColorInfo(), ListConfigureInfo(), ListDelegateInfo(), ListFiles(), ListLocaleInfo(), ListLogInfo(), ListMagicInfo(), ListMagickInfo(), ListMimeInfo(), ListPolicyInfo(), ListTypeInfo(), LoadColorCache(), LoadConfigureCache(), LoadDelegateCache(), LoadLocaleCache(), LoadLogCache(), LoadPolicyCache(), LoadTypeCache(), LogMagickEventList(), LZWEncodeImage(), MontageImageList(), MorphologyPrimitive(), MotionBlurImage(), open_utf8(), OptimalTau(), OptimizeLayerFrames(), OTSUThreshold(), PackbitsEncodeImage(), ParseInternalDoctype(), popen_utf8(), PreviewImage(), ReadInlineImage(), ReduceImageColors(), RelinquishAlignedMemory(), RelinquishMagickMatrix(), RelinquishVirtualMemory(), remove_utf8(), RemoveElementByValueFromLinkedList(), RemoveElementFromLinkedList(), RemoveLastElementFromLinkedList(), RemoveNodeByValueFromSplayTree(), RemoveNodeFromSplayTree(), rename_utf8(), RenderMVGContent(), RenderType(), ResetSplayTree(), ResizeMagickMemory(), ResizeQuantumMemory(), RotationalBlurImage(), SampleImage(), ScaleImage(), ScaleSpace(), SegmentImage(), SetGrayscaleImage(), SetImageArtifact(), SetImageDepth(), SetImageInfo(), SetImageOption(), SetImageProfileInternal(), SetImageProperty(), SetImageRegistry(), SetPolicyValue(), SortColormapByIntensity(), SparseColorImage(), sRGBTransformImage(), stat_utf8(), StreamImagePixels(), StringToArgv(), TraceBezier(), TraceStrokePolygon(), TransformsRGBImage(), WaveImage(), WaveletDenoiseImage(), XBestFont(), XBestPixel(), XColorBrowserWidget(), XCommandWidget(), XDestroyResourceInfo(), XDisplayImageInfo(), XDitherImage(), XFileBrowserWidget(), XFontBrowserWidget(), XFreeStandardColormap(), XGetPixelInfo(), XGetWindowImage(), XMakeStandardColormap(), XSetWindows(), and XTextViewHelp().

MagickExport MemoryInfo* RelinquishVirtualMemory ( MemoryInfo memory_info  ) 
MagickExport void* ResetMagickMemory ( void *  memory,
int  byte,
const size_t  size 
)

Referenced by GetPixelInfoPixel().

MagickPrivate void ResetMaxMemoryRequest ( void   ) 

References max_memory_request.

MagickPrivate void ResetVirtualAnonymousMemory ( void   ) 
MagickExport void* ResizeMagickMemory ( void *  memory,
const size_t  size 
)
MagickExport void* ResizeQuantumMemory ( void *  memory,
const size_t  count,
const size_t  quantum 
)
MagickExport void SetMagickAlignedMemoryMethods ( AcquireAlignedMemoryHandler  acquire_aligned_memory_handler,
RelinquishAlignedMemoryHandler  relinquish_aligned_memory_handler 
)
MagickExport void SetMagickMemoryMethods ( AcquireMemoryHandler  acquire_memory_handler,
ResizeMemoryHandler  resize_memory_handler,
DestroyMemoryHandler  destroy_memory_handler 
)

Variable Documentation

size_t max_memory_request = 0 [static]
size_t virtual_anonymous_memory = 0 [static]

Generated on 18 May 2020 for MagickCore by  doxygen 1.6.1