MagickCore
6.9.11
Convert, Edit, Or Compose Bitmap Images
|
Go to the documentation of this file.
18 #ifndef MAGICKCORE_MEMORY_H
19 #define MAGICKCORE_MEMORY_H
24 #if defined(__cplusplus) || defined(c_plusplus)
33 (*DestroyMemoryHandler)(
void *),
35 *(*AcquireAlignedMemoryHandler)(
const size_t,
const size_t),
72 const size_t count,
const size_t quantum)
74 if ((count == 0) || (quantum == 0))
76 if (quantum != ((count*quantum)/count))
85 const size_t count,
const size_t quantum,
size_t *
const extent)
90 if ((count == 0) || (quantum == 0))
93 if (quantum != (
length/count))
98 assert(extent != (
size_t *
const) NULL);
103 #if defined(__cplusplus) || defined(c_plusplus)
static void * AcquireAlignedMemory_Generic(const size_t size)
Definition: memory.c:310
MagickExport void LockSemaphoreInfo(SemaphoreInfo *semaphore_info)
Definition: semaphore.c:293
#define MagickExport
Definition: method-attribute.h:80
struct _MemoryPool MemoryPool
#define magick_alloc_size(x)
Definition: method-attribute.h:113
MagickExport void * RelinquishAlignedMemory(void *memory)
Definition: memory.c:1081
MagickExport void DestroyMagickMemory(void)
MagickExport MemoryInfo * AcquireVirtualMemory(const size_t count, const size_t quantum)
Definition: memory.c:670
MagickExport void * RelinquishAlignedMemory(void *)
MagickExport void * ResizeMagickMemory(void *, const size_t) magick_attribute((__malloc__)) magick_alloc_size(2)
#define MaxBlockExponent
Definition: memory.c:77
void *(*)(*) *(*) *(* AcquireAlignedMemoryHandler)(const size_t, const size_t)
Definition: memory_.h:35
AcquireAlignedMemoryHandler acquire_aligned_memory_handler
Definition: memory.c:129
#define MagickCoreSignature
Definition: method-attribute.h:86
MagickExport void * ResizeQuantumMemory(void *memory, const size_t count, const size_t quantum)
Definition: memory.c:1408
static MagickMemoryMethods memory_methods
Definition: memory.c:194
#define MaxSegments
Definition: memory.c:79
static void ** pointer_to_space_for_actual_base_address(void *const p)
Definition: memory.c:289
#define ALIGNMENT_OVERHEAD
Definition: memory.c:282
VirtualMemoryType type
Definition: memory.c:141
MagickExport MemoryInfo * AcquireVirtualMemory(const size_t, const size_t) magick_alloc_sizes(1
AcquireMemoryHandler acquire_memory_handler
Definition: memory.c:120
#define magick_restrict
Definition: MagickCore.h:41
MagickExport void SetMagickMemoryMethods(AcquireMemoryHandler acquire_memory_handler, ResizeMemoryHandler resize_memory_handler, DestroyMemoryHandler destroy_memory_handler)
Definition: memory.c:1488
VirtualMemoryType
Definition: memory.c:93
char filename[MagickPathExtent]
Definition: memory.c:138
#define magick_alloc_sizes(x, y)
Definition: method-attribute.h:114
MagickExport MagickBooleanType UnmapBlob(void *, const size_t)
Definition: blob.c:4751
void * blocks[MaxBlocks+1]
Definition: memory.c:159
struct _DataSegmentInfo * next
Definition: memory.c:114
static MagickBooleanType HeapOverflowSanityCheck(const size_t count, const size_t quantum)
Definition: memory_.h:71
static size_t max_memory_request
Definition: memory.c:173
void * blob
Definition: memory.c:147
void *(*)(* DestroyMemoryHandler)(void *)
Definition: memory_.h:33
MagickExport void * ResizeMagickMemory(void *memory, const size_t size)
Definition: memory.c:1348
MagickExport char * DestroyString(char *string)
Definition: string.c:810
static size_t StringToSizeType(const char *string, const double interval)
Definition: string-private.h:113
DataSegmentInfo segment_pool[MaxSegments]
Definition: memory.c:166
static void * actual_base_address(void *const p)
Definition: memory.c:294
@ MagickTrue
Definition: magick-type.h:201
#define NextBlockInList(block)
Definition: memory.c:81
@ IOMode
Definition: blob.h:35
#define BlockFooter(block, size)
Definition: memory.c:73
static void * reserve_space_for_actual_base_address(void *const p)
Definition: memory.c:284
MagickExport void SetMagickAlignedMemoryMethods(AcquireAlignedMemoryHandler acquire_aligned_memory_handler, RelinquishAlignedMemoryHandler relinquish_aligned_memory_handler)
Definition: memory.c:1449
MagickExport size_t GetMaxMemoryRequest(void)
Definition: memory.c:1007
void *(*)(*) *(* ResizeMemoryHandler)(void *, size_t) magick_alloc_size(2)
Definition: memory_.h:34
MagickPrivate void ResetVirtualAnonymousMemory(void)
Definition: memory.c:1296
MagickExport void * AcquireMagickMemory(const size_t size)
Definition: memory.c:521
MagickExport void SetMagickAlignedMemoryMethods(AcquireAlignedMemoryHandler, RelinquishAlignedMemoryHandler)
#define SizeMask
Definition: memory.c:86
void * bound
Definition: memory.c:104
Definition: semaphore.c:61
#define NextBlock(block)
Definition: memory.c:80
#define PreviousBlockInList(block)
Definition: memory.c:84
MagickExport void * CopyMagickMemory(void *magick_restrict destination, const void *magick_restrict source, const size_t size)
Definition: memory.c:800
MagickBooleanType mapped
Definition: memory.c:107
void * allocation
Definition: memory.c:103
#define CACHE_LINE_SIZE
Definition: memory-private.h:30
MagickExport void * GetVirtualMemoryBlob(const MemoryInfo *)
MagickExport void GetMagickMemoryMethods(AcquireMemoryHandler *acquire_memory_handler, ResizeMemoryHandler *resize_memory_handler, DestroyMemoryHandler *destroy_memory_handler)
Definition: memory.c:976
#define PreviousBlockBit
Definition: memory.c:83
size_t signature
Definition: memory.c:150
MagickExport int LocaleCompare(const char *p, const char *q)
Definition: locale.c:1435
static void * adjust(void *const p)
Definition: memory.c:304
ResizeMemoryHandler resize_memory_handler
Definition: memory.c:123
@ UnalignedVirtualMemory
Definition: memory.c:97
#define MagickAssumeAligned(address)
Definition: memory-private.h:43
MagickExport void DestroyMagickMemory(void)
Definition: memory.c:848
#define SizeOfBlock(block)
Definition: memory.c:87
@ MapVirtualMemory
Definition: memory.c:96
#define MaxBlocks
Definition: memory.c:78
#define MagickPrivate
Definition: method-attribute.h:81
@ MagickFalse
Definition: magick-type.h:200
#define AcquireAlignedMemory_Actual
Definition: memory.c:309
struct _DataSegmentInfo * previous
Definition: memory.c:112
MagickExport void * AcquireAlignedMemory(const size_t, const size_t) magick_attribute((__malloc__)) magick_alloc_sizes(1
MagickExport void * AcquireAlignedMemory(const size_t count, const size_t quantum)
Definition: memory.c:337
@ UndefinedVirtualMemory
Definition: memory.c:94
MagickExport void * ResizeQuantumMemory(void *, const size_t, const size_t) magick_attribute((__malloc__)) magick_alloc_sizes(2
void *(* AcquireMemoryHandler)(size_t) magick_alloc_size(1)
Definition: memory_.h:32
struct _MagickMemoryMethods MagickMemoryMethods
DestroyMemoryHandler destroy_memory_handler
Definition: memory.c:126
size_t length
Definition: memory.c:110
MagickExport void ActivateSemaphoreInfo(SemaphoreInfo **semaphore_info)
Definition: semaphore.c:98
RelinquishAlignedMemoryHandler relinquish_aligned_memory_handler
Definition: memory.c:132
MagickPrivate void ResetMaxMemoryRequest(void)
Definition: memory.c:1273
size_t allocation
Definition: memory.c:156
MagickExport void * AcquireMagickMemory(const size_t) magick_attribute((__malloc__)) magick_alloc_size(1)
MagickExport void DestroySemaphoreInfo(SemaphoreInfo **semaphore_info)
Definition: semaphore.c:351
size_t MagickAddressType
Definition: magick-type.h:151
MagickExport MagickBooleanType magick_attribute((deprecated))
MagickExport void * GetVirtualMemoryBlob(const MemoryInfo *memory_info)
Definition: memory.c:1051
MagickExport MemoryInfo * RelinquishVirtualMemory(MemoryInfo *memory_info)
Definition: memory.c:1190
MagickBooleanType
Definition: magick-type.h:199
size_t number_segments
Definition: memory.c:162
MagickExport void * RelinquishMagickMemory(void *memory)
Definition: memory.c:1123
size_t length
Definition: memory.c:144
MagickExport void * RelinquishMagickMemory(void *)
MagickExport void GetMagickMemoryMethods(AcquireMemoryHandler *, ResizeMemoryHandler *, DestroyMemoryHandler *)
MagickExport MagickBooleanType RelinquishUniqueFileResource(const char *path)
Definition: resource.c:1287
MagickExport size_t GetMaxMemoryRequest(void)
Definition: memory.c:1007
MagickExport MemoryInfo * RelinquishVirtualMemory(MemoryInfo *)
Definition: memory.c:1190
DataSegmentInfo * segments[MaxSegments]
Definition: memory.c:165
#define CACHE_ALIGNED(n)
Definition: memory-private.h:33
#define SegmentSize
Definition: memory.c:85
struct _DataSegmentInfo DataSegmentInfo
MagickExport void * ResetMagickMemory(void *memory, int byte, const size_t size)
Definition: memory.c:1249
MagickExport void * AcquireCriticalMemory(const size_t size)
Definition: memory.c:595
MagickExport void SetMagickMemoryMethods(AcquireMemoryHandler, ResizeMemoryHandler, DestroyMemoryHandler)
Definition: memory.c:1488
#define BlockThreshold
Definition: memory.c:76
MagickExport int AcquireUniqueFileResource(char *path)
Definition: resource.c:600
void *(*)(*) *(*) *(*)(* RelinquishAlignedMemoryHandler)(void *)
Definition: memory_.h:36
#define PreviousBlock(block)
Definition: memory.c:82
#define ThrowFatalException(severity, tag)
Definition: exception-private.h:42
MagickExport void UnlockSemaphoreInfo(SemaphoreInfo *semaphore_info)
Definition: semaphore.c:449
@ AlignedVirtualMemory
Definition: memory.c:95
#define MagickULLConstant(c)
Definition: magick-type.h:39
MagickExport char * GetPolicyValue(const char *name)
Definition: policy.c:501
MagickExport void * AcquireQuantumMemory(const size_t, const size_t) magick_attribute((__malloc__)) magick_alloc_sizes(1
MagickExport void * ResetMagickMemory(void *, int, const size_t)
static size_t virtual_anonymous_memory
Definition: memory.c:174
@ ResourceLimitFatalError
Definition: exception.h:78
#define BlockHeader(block)
Definition: memory.c:75
static MagickBooleanType HeapOverflowSanityCheckGetSize(const size_t count, const size_t quantum, size_t *const extent)
Definition: memory_.h:84
MagickExport unsigned char * MapBlob(int, const MapMode, const MagickOffsetType, const size_t)
Definition: blob.c:2392
MagickExport void * AcquireCriticalMemory(const size_t)
MagickExport void * AcquireQuantumMemory(const size_t count, const size_t quantum)
Definition: memory.c:634
MagickExport void * CopyMagickMemory(void *magick_restrict, const void *magick_restrict, const size_t) magick_attribute((__nonnull__))
ssize_t MagickOffsetType
Definition: magick-type.h:135
static void * align_to_cache(void *const p)
Definition: memory.c:299
#define MagickPathExtent
Definition: magick-type.h:31