00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef MAGICKCORE_MEMORY_PRIVATE_H
00019 #define MAGICKCORE_MEMORY_PRIVATE_H
00020
00021 #if defined(__cplusplus) || defined(c_plusplus)
00022 extern "C" {
00023 #endif
00024
00025 #include "magick/exception-private.h"
00026
00027 #if defined(__powerpc__)
00028 # define CACHE_LINE_SIZE (16*sizeof(void *))
00029 #else
00030 # define CACHE_LINE_SIZE (8*sizeof(void *))
00031 #endif
00032
00033 #define CacheAlign(size) ((size) < CACHE_LINE_SIZE ? CACHE_LINE_SIZE : (size))
00034
00035 #if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6))
00036 #if !defined(__ICC)
00037 #define MagickAssumeAligned(address) \
00038 __builtin_assume_aligned((address),CACHE_LINE_SIZE)
00039 #else
00040 #define MagickAssumeAligned(address) (address)
00041 #endif
00042 #else
00043 #define MagickAssumeAligned(address) (address)
00044 #endif
00045
00046 MagickExport MagickBooleanType
00047 HeapOverflowSanityCheck(const size_t,const size_t);
00048
00049 MagickExport size_t
00050 GetMaxMemoryRequest(void);
00051
00052 static inline void *AcquireCriticalMemory(const size_t size)
00053 {
00054 register void
00055 *memory;
00056
00057
00058
00059
00060 memory=AcquireMagickMemory(size);
00061 if (memory == (void *) NULL)
00062 ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
00063 return(memory);
00064 }
00065
00066 #if defined(__cplusplus) || defined(c_plusplus)
00067 }
00068 #endif
00069
00070 #endif