MagickCore  6.9.10
Convert, Edit, Or Compose Bitmap Images
memory_.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2019 ImageMagick Studio LLC, a non-profit organization
3  dedicated to making software imaging solutions freely available.
4 
5  You may not use this file except in compliance with the License.
6  obtain a copy of the License at
7 
8  https://imagemagick.org/script/license.php
9 
10  Unless required by applicable law or agreed to in writing, software
11  distributed under the License is distributed on an "AS IS" BASIS,
12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  See the License for the specific language governing permissions and
14  limitations under the License.
15 
16  MagickCore memory methods.
17 */
18 #ifndef MAGICKCORE_MEMORY_H
19 #define MAGICKCORE_MEMORY_H
20 
21 #if defined(__cplusplus) || defined(c_plusplus)
22 extern "C" {
23 #endif
24 
25 typedef struct _MemoryInfo
26  MemoryInfo;
27 
28 typedef void
29  *(*AcquireMemoryHandler)(size_t) magick_alloc_size(1),
30  (*DestroyMemoryHandler)(void *),
31  *(*ResizeMemoryHandler)(void *,size_t) magick_alloc_size(2);
32 
34  *AcquireVirtualMemory(const size_t,const size_t) magick_alloc_sizes(1,2),
36 
37 extern MagickExport void
38  *AcquireAlignedMemory(const size_t,const size_t)
39  magick_attribute((__malloc__)) magick_alloc_sizes(1,2),
40  *AcquireMagickMemory(const size_t) magick_attribute((__malloc__))
42  *AcquireQuantumMemory(const size_t,const size_t)
43  magick_attribute((__malloc__)) magick_alloc_sizes(1,2),
44  *CopyMagickMemory(void *,const void *,const size_t)
45  magick_attribute((__nonnull__)),
46  DestroyMagickMemory(void),
50  *RelinquishAlignedMemory(void *),
51  *RelinquishMagickMemory(void *),
52  *ResetMagickMemory(void *,int,const size_t),
53  *ResizeMagickMemory(void *,const size_t)
54  magick_attribute((__malloc__)) magick_alloc_size(2),
55  *ResizeQuantumMemory(void *,const size_t,const size_t)
56  magick_attribute((__malloc__)) magick_alloc_sizes(2,3),
59 
60 #if defined(__cplusplus) || defined(c_plusplus)
61 }
62 #endif
63 
64 #endif
SiPrefixToDoubleInterval
static double SiPrefixToDoubleInterval(const char *string, const double interval)
Definition: string-private.h:27
LockSemaphoreInfo
MagickExport void LockSemaphoreInfo(SemaphoreInfo *semaphore_info)
Definition: semaphore.c:345
MagickExport
#define MagickExport
Definition: method-attribute.h:80
MemoryPool
struct _MemoryPool MemoryPool
policy.h
magick_alloc_size
#define magick_alloc_size(x)
Definition: method-attribute.h:113
RelinquishAlignedMemory
MagickExport void * RelinquishAlignedMemory(void *memory)
Definition: memory.c:1040
CopyMagickMemory
MagickExport void * CopyMagickMemory(void *, const void *, const size_t) magick_attribute((__nonnull__))
DestroyMagickMemory
MagickExport void DestroyMagickMemory(void)
AcquireVirtualMemory
MagickExport MemoryInfo * AcquireVirtualMemory(const size_t count, const size_t quantum)
Definition: memory.c:593
RelinquishAlignedMemory
MagickExport void * RelinquishAlignedMemory(void *)
ResizeMagickMemory
MagickExport void * ResizeMagickMemory(void *, const size_t) magick_attribute((__malloc__)) magick_alloc_size(2)
MaxBlockExponent
#define MaxBlockExponent
Definition: memory.c:78
MagickCoreSignature
#define MagickCoreSignature
Definition: method-attribute.h:86
ResetMagickMemory
MagickExport void * ResetMagickMemory(void *memory, int c, const size_t size)
Definition: memory.c:1206
ResizeQuantumMemory
MagickExport void * ResizeQuantumMemory(void *memory, const size_t count, const size_t quantum)
Definition: memory.c:1327
memory_methods
static MagickMemoryMethods memory_methods
Definition: memory.c:188
_MemoryPool
Definition: memory.c:149
MaxSegments
#define MaxSegments
Definition: memory.c:80
_MemoryInfo::type
VirtualMemoryType type
Definition: memory.c:137
AcquireVirtualMemory
MagickExport MemoryInfo * AcquireVirtualMemory(const size_t, const size_t) magick_alloc_sizes(1
memory-private.h
_MagickMemoryMethods::acquire_memory_handler
AcquireMemoryHandler acquire_memory_handler
Definition: memory.c:122
SetMagickMemoryMethods
MagickExport void SetMagickMemoryMethods(AcquireMemoryHandler acquire_memory_handler, ResizeMemoryHandler resize_memory_handler, DestroyMemoryHandler destroy_memory_handler)
Definition: memory.c:1372
VirtualMemoryType
VirtualMemoryType
Definition: memory.c:94
magick_alloc_sizes
#define magick_alloc_sizes(x, y)
Definition: method-attribute.h:114
UnmapBlob
MagickExport MagickBooleanType UnmapBlob(void *, const size_t)
Definition: blob.c:4682
_MemoryPool::blocks
void * blocks[MaxBlocks+1]
Definition: memory.c:155
resource_.h
_DataSegmentInfo::next
struct _DataSegmentInfo * next
Definition: memory.c:116
utility.h
max_memory_request
static size_t max_memory_request
Definition: memory.c:169
_MemoryInfo::blob
void * blob
Definition: memory.c:143
DestroyMemoryHandler
void *(*)(* DestroyMemoryHandler)(void *)
Definition: memory_.h:30
string_.h
ResizeMagickMemory
MagickExport void * ResizeMagickMemory(void *memory, const size_t size)
Definition: memory.c:1267
DestroyString
MagickExport char * DestroyString(char *string)
Definition: string.c:820
_MemoryPool::segment_pool
DataSegmentInfo segment_pool[MaxSegments]
Definition: memory.c:162
MagickTrue
@ MagickTrue
Definition: magick-type.h:194
blob.h
semaphore.h
_MemoryInfo::filename
char filename[MaxTextExtent]
Definition: memory.c:134
NextBlockInList
#define NextBlockInList(block)
Definition: memory.c:83
IOMode
@ IOMode
Definition: blob.h:34
BlockFooter
#define BlockFooter(block, size)
Definition: memory.c:73
blob-private.h
ResizeMemoryHandler
void *(*)(*) *(* ResizeMemoryHandler)(void *, size_t) magick_alloc_size(2)
Definition: memory_.h:31
AcquireMagickMemory
MagickExport void * AcquireMagickMemory(const size_t size)
Definition: memory.c:473
_MemoryInfo
Definition: memory.c:131
SizeMask
#define SizeMask
Definition: memory.c:88
_DataSegmentInfo::bound
void * bound
Definition: memory.c:106
HeapOverflowSanityCheck
MagickExport MagickBooleanType HeapOverflowSanityCheck(const size_t count, const size_t quantum)
Definition: memory.c:1002
SemaphoreInfo
Definition: semaphore.c:59
NextBlock
#define NextBlock(block)
Definition: memory.c:82
PreviousBlockInList
#define PreviousBlockInList(block)
Definition: memory.c:86
_DataSegmentInfo::mapped
MagickBooleanType mapped
Definition: memory.c:109
_DataSegmentInfo::allocation
void * allocation
Definition: memory.c:105
CACHE_LINE_SIZE
#define CACHE_LINE_SIZE
Definition: memory-private.h:30
GetVirtualMemoryBlob
MagickExport void * GetVirtualMemoryBlob(const MemoryInfo *)
GetMagickMemoryMethods
MagickExport void GetMagickMemoryMethods(AcquireMemoryHandler *acquire_memory_handler, ResizeMemoryHandler *resize_memory_handler, DestroyMemoryHandler *destroy_memory_handler)
Definition: memory.c:895
PreviousBlockBit
#define PreviousBlockBit
Definition: memory.c:85
_MemoryInfo::signature
size_t signature
Definition: memory.c:146
LocaleCompare
MagickExport int LocaleCompare(const char *p, const char *q)
Definition: locale.c:1440
_MagickMemoryMethods::resize_memory_handler
ResizeMemoryHandler resize_memory_handler
Definition: memory.c:125
UnalignedVirtualMemory
@ UnalignedVirtualMemory
Definition: memory.c:99
MagickAssumeAligned
#define MagickAssumeAligned(address)
Definition: memory-private.h:43
DestroyMagickMemory
MagickExport void DestroyMagickMemory(void)
Definition: memory.c:767
SizeOfBlock
#define SizeOfBlock(block)
Definition: memory.c:89
MapVirtualMemory
@ MapVirtualMemory
Definition: memory.c:98
MaxBlocks
#define MaxBlocks
Definition: memory.c:79
MagickFalse
@ MagickFalse
Definition: magick-type.h:193
_DataSegmentInfo::previous
struct _DataSegmentInfo * previous
Definition: memory.c:114
AcquireAlignedMemory
MagickExport void * AcquireAlignedMemory(const size_t, const size_t) magick_attribute((__malloc__)) magick_alloc_sizes(1
_DataSegmentInfo
Definition: memory.c:102
AcquireAlignedMemory
MagickExport void * AcquireAlignedMemory(const size_t count, const size_t quantum)
Definition: memory.c:243
UndefinedVirtualMemory
@ UndefinedVirtualMemory
Definition: memory.c:96
ResizeQuantumMemory
MagickExport void * ResizeQuantumMemory(void *, const size_t, const size_t) magick_attribute((__malloc__)) magick_alloc_sizes(2
AcquireMemoryHandler
void *(* AcquireMemoryHandler)(size_t) magick_alloc_size(1)
Definition: memory_.h:29
MagickMemoryMethods
struct _MagickMemoryMethods MagickMemoryMethods
_MagickMemoryMethods::destroy_memory_handler
DestroyMemoryHandler destroy_memory_handler
Definition: memory.c:128
_DataSegmentInfo::length
size_t length
Definition: memory.c:112
ActivateSemaphoreInfo
MagickExport void ActivateSemaphoreInfo(SemaphoreInfo **semaphore_info)
Definition: semaphore.c:97
AlignedPowerOf2
#define AlignedPowerOf2(x)
_MemoryPool::allocation
size_t allocation
Definition: memory.c:152
AcquireMagickMemory
MagickExport void * AcquireMagickMemory(const size_t) magick_attribute((__malloc__)) magick_alloc_size(1)
DestroySemaphoreInfo
MagickExport void DestroySemaphoreInfo(SemaphoreInfo **semaphore_info)
Definition: semaphore.c:293
magick_attribute
MagickExport MagickBooleanType magick_attribute((deprecated))
GetVirtualMemoryBlob
MagickExport void * GetVirtualMemoryBlob(const MemoryInfo *memory_info)
Definition: memory.c:971
StringToSizeType
static size_t StringToSizeType(const char *string, const double interval)
Definition: memory.c:582
RelinquishVirtualMemory
MagickExport MemoryInfo * RelinquishVirtualMemory(MemoryInfo *memory_info)
Definition: memory.c:1144
MagickBooleanType
MagickBooleanType
Definition: magick-type.h:191
_MemoryPool::number_segments
size_t number_segments
Definition: memory.c:158
_MagickMemoryMethods
Definition: memory.c:119
RelinquishMagickMemory
MagickExport void * RelinquishMagickMemory(void *memory)
Definition: memory.c:1077
_MemoryInfo::length
size_t length
Definition: memory.c:140
RelinquishMagickMemory
MagickExport void * RelinquishMagickMemory(void *)
GetMagickMemoryMethods
MagickExport void GetMagickMemoryMethods(AcquireMemoryHandler *, ResizeMemoryHandler *, DestroyMemoryHandler *)
studio.h
RelinquishUniqueFileResource
MagickExport MagickBooleanType RelinquishUniqueFileResource(const char *path)
Definition: resource.c:1190
GetMaxMemoryRequest
MagickExport size_t GetMaxMemoryRequest(void)
Definition: memory.c:927
RelinquishVirtualMemory
MagickExport MemoryInfo * RelinquishVirtualMemory(MemoryInfo *)
Definition: memory.c:1144
_MemoryPool::segments
DataSegmentInfo * segments[MaxSegments]
Definition: memory.c:161
SegmentSize
#define SegmentSize
Definition: memory.c:87
DataSegmentInfo
struct _DataSegmentInfo DataSegmentInfo
SetMagickMemoryMethods
MagickExport void SetMagickMemoryMethods(AcquireMemoryHandler, ResizeMemoryHandler, DestroyMemoryHandler)
Definition: memory.c:1372
BlockThreshold
#define BlockThreshold
Definition: memory.c:77
memory_.h
AcquireUniqueFileResource
MagickExport int AcquireUniqueFileResource(char *path)
Definition: resource.c:558
AlignedExtent
#define AlignedExtent(size, alignment)
PreviousBlock
#define PreviousBlock(block)
Definition: memory.c:84
exception-private.h
ThrowFatalException
#define ThrowFatalException(severity, tag)
Definition: exception-private.h:42
UnlockSemaphoreInfo
MagickExport void UnlockSemaphoreInfo(SemaphoreInfo *semaphore_info)
Definition: semaphore.c:450
exception.h
AlignedVirtualMemory
@ AlignedVirtualMemory
Definition: memory.c:97
MagickULLConstant
#define MagickULLConstant(c)
Definition: magick-type.h:39
GetPolicyValue
MagickExport char * GetPolicyValue(const char *name)
Definition: policy.c:500
MaxTextExtent
#define MaxTextExtent
Definition: method-attribute.h:89
string-private.h
AcquireQuantumMemory
MagickExport void * AcquireQuantumMemory(const size_t, const size_t) magick_attribute((__malloc__)) magick_alloc_sizes(1
ResetMagickMemory
MagickExport void * ResetMagickMemory(void *, int, const size_t)
virtual_anonymous_memory
static size_t virtual_anonymous_memory
Definition: memory.c:170
ResourceLimitFatalError
@ ResourceLimitFatalError
Definition: exception.h:78
BlockHeader
#define BlockHeader(block)
Definition: memory.c:75
MapBlob
MagickExport unsigned char * MapBlob(int, const MapMode, const MagickOffsetType, const size_t)
Definition: blob.c:2346
AcquireQuantumMemory
MagickExport void * AcquireQuantumMemory(const size_t count, const size_t quantum)
Definition: memory.c:544
MagickOffsetType
ssize_t MagickOffsetType
Definition: magick-type.h:135
CopyMagickMemory
MagickExport void * CopyMagickMemory(void *destination, const void *source, const size_t size)
Definition: memory.c:719