Changeset e51781 in git
- Timestamp:
- Mar 31, 2017, 4:12:25 PM (7 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 735b48d0599e2d14512034dc106eefa76e038991
- Parents:
- 61145cc38c432ee38d9db52c5a952b1ed522ae9f
- Location:
- omalloc
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
omalloc/configure.ac
r61145cc re51781 145 145 AC_CHECK_HEADERS(unistd.h sys/mman.h fcntl.h /usr/include/malloc.h) 146 146 147 AC_CHECK_FUNCS(popen mmap sbrk random )147 AC_CHECK_FUNCS(popen mmap sbrk random malloc_usable_size malloc_size) 148 148 149 149 dnl llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll … … 188 188 FILE *f=fopen("conftestval", "w"); 189 189 if (!f) exit(1); 190 fprintf(f, "%d\n", omalloc_getpagesize);190 fprintf(f, "%d\n", (int)omalloc_getpagesize); 191 191 exit(0); 192 192 }], ac_cv_pagesize=`cat conftestval`, ac_cv_pagesize=0, ac_cv_pagesize=0)) … … 296 296 fi 297 297 298 AC_MSG_CHECKING(whether malloc provides SizeOfAddr)299 if test "${ac_cv_malloc_sizeof_addr}" = no; then300 AC_MSG_RESULT( (cached) no)301 elif test "${ac_cv_malloc_sizeof_addr}" = "${OM_MALLOC_HEADER}_${OM_MALLOC_SOURCE}"; then302 AC_MSG_RESULT( (cached) yes)303 else304 AC_TRY_RUN([305 #include <stdlib.h>306 #include "$OM_MALLOC_HEADER"307 #ifdef OM_HAVE_MALLOC_SOURCE308 #include "$OM_MALLOC_SOURCE"309 #endif310 311 int main()312 {313 void* addr = OM_MALLOC_MALLOC(512);314 #ifdef OM_MALLOC_SIZEOF_ADDR315 if (OM_MALLOC_SIZEOF_ADDR(addr) < 512)316 exit(1);317 exit(0);318 #else319 exit(1);320 #endif321 }322 ], ac_cv_malloc_sizeof_addr="${OM_MALLOC_HEADER}_${OM_MALLOC_SOURCE}", ac_cv_malloc_sizeof_addr=no, ac_cv_malloc_sizeof_addr=no)323 if test "${ac_cv_malloc_sizeof_addr}" = no; then324 AC_MSG_RESULT(no)325 else326 AC_MSG_RESULT(yes)327 fi328 fi329 if test "$ac_cv_malloc_sizeof_addr" != no; then330 AC_DEFINE(OM_MALLOC_PROVIDES_SIZEOF_ADDR,1,"Whether malloc provides SIZEOF_ADDR")331 fi332 333 298 dnl lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll 334 299 dnl check whether valloc is provided and that it works -
omalloc/omAllocEmulate.c
r61145cc re51781 31 31 void* omEmulateRealloc0(void* o_addr, size_t n_size) 32 32 { 33 #ifdef OM_MALLOC_SIZEOF_ADDR34 33 size_t o_size = OM_MALLOC_SIZEOF_ADDR(o_addr); 35 #endif36 34 void* addr = OM_MALLOC_REALLOC(o_addr, n_size); 37 #ifdef OM_MALLOC_SIZEOF_ADDR38 35 if (n_size > o_size) 39 36 memset((char *)addr + o_size, 0, n_size - o_size); 40 #endif41 37 return addr; 42 38 } -
omalloc/omAllocSystem.c
r61145cc re51781 29 29 *******************************************************************/ 30 30 /* allocation of large addr */ 31 #if defined(OM_MALLOC_PROVIDES_SIZEOF_ADDR) 32 #define _omSizeOfLargeAddr(addr) (OM_MALLOC_SIZEOF_ADDR(addr) & (~SIZEOF_OM_ALIGNMENT_1)) 31 #if defined(HAVE_MALLOC_SIZE) 32 #define _omSizeOfLargeAddr(addr) (malloc_size(addr)) 33 #elif defined(HAVE_MALLOC_USABLE_SIZE) 34 #define _omSizeOfLargeAddr(addr) (malloc_usable_size(addr)) 33 35 #else 34 36 void* omAllocLarge(size_t size) … … 64 66 65 67 #define _omSizeOfLargeAddr(addr) (*((size_t*) ((char*) addr - SIZEOF_STRICT_ALIGNMENT))) 66 #endif /* OM_MALLOC_PROVIDES_SIZEOF_ADDR*/68 #endif /* HAVE_MALLOC_SIZE/HAVE_MALLOC_USABLE_SIZE */ 67 69 68 70 void* omAlloc0Large(size_t size) … … 97 99 size_t omSizeOfAddr(const void* addr) 98 100 { 101 /*if (addr==NULL) return 0; */ 99 102 100 103 return (omIsBinPageAddr(addr) ? … … 194 197 } 195 198 199 size=omSizeOfAddr(ptr); 196 200 #ifndef OM_NDEBUG 197 201 if (((unsigned long) ptr) + size > om_MaxAddr) … … 234 238 void* res; 235 239 240 oldsize=omSizeOfAddr(addr); 236 241 res = OM_REALLOC_FROM_SYSTEM(addr, newsize); 237 242 if (res == NULL) … … 250 255 } 251 256 } 257 newsize=omSizeOfAddr(res); 252 258 253 259 #ifndef OM_NDEBUG -
omalloc/omAllocSystem.h
r61145cc re51781 27 27 28 28 29 #if def OM_MALLOC_PROVIDES_SIZEOF_ADDR30 #define omAllocLarge(size) omAllocFromSystem( OM_ALIGN_SIZE(size))31 #define omReallocLarge(addr, new_size) omReallocSizeFromSystem(addr, omSizeOfLargeAddr(addr), OM_ALIGN_SIZE(new_size))29 #if defined(HAVE_MALLOC_SIZE) || defined(HAVE_MALLOC_USABLE_SIZE) 30 #define omAllocLarge(size) omAllocFromSystem(size) 31 #define omReallocLarge(addr, new_size) omReallocSizeFromSystem(addr, omSizeOfLargeAddr(addr), new_size) 32 32 #define omFreeLarge(addr) omFreeSizeToSystem(addr, omSizeOfLargeAddr(addr)) 33 33 #else -
omalloc/omMallocSystem.h
r61145cc re51781 14 14 #define OM_MALLOC_VALLOC valloc 15 15 #define OM_MALLOC_VFREE(addr, size) OM_MALLOC_FREE(addr) 16 #ifdef HAVE_MALLOC_SIZE 16 17 /* the following will work under Mac OS X */ 17 18 #define OM_MALLOC_SIZEOF_ADDR(addr) (malloc_size(addr)) 19 #elif (defined(HAVE_MALLOC_USABLE_SIZE)) 20 /* and this will work under Linux */ 21 #define OM_MALLOC_SIZEOF_ADDR(addr) (malloc_usable_size(addr)) 22 #else 23 static inline OM_MALLOC_SIZEOF_ADDR(void *d) { long*dd=(long*)d; return *(dd-1); } 24 #endif 18 25 19 26 #endif /* OM_MALLOC_SYSTEM_H */
Note: See TracChangeset
for help on using the changeset viewer.