Initialize mparams */
| 2494 | |
| 2495 | /* Initialize mparams */ |
| 2496 | static int init_mparams(void) { |
| 2497 | if (mparams.page_size == 0) { |
| 2498 | size_t s; |
| 2499 | |
| 2500 | mparams.nice = 1; |
| 2501 | mparams.mmap_threshold = DEFAULT_MMAP_THRESHOLD; |
| 2502 | mparams.trim_threshold = DEFAULT_TRIM_THRESHOLD; |
| 2503 | #if MORECORE_CONTIGUOUS |
| 2504 | mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT; |
| 2505 | #else /* MORECORE_CONTIGUOUS */ |
| 2506 | mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT|USE_NONCONTIGUOUS_BIT; |
| 2507 | #endif /* MORECORE_CONTIGUOUS */ |
| 2508 | |
| 2509 | #if (FOOTERS && !INSECURE) |
| 2510 | { |
| 2511 | #if USE_DEV_RANDOM |
| 2512 | int fd; |
| 2513 | unsigned char buf[sizeof(size_t)]; |
| 2514 | /* Try to use /dev/urandom, else fall back on using time */ |
| 2515 | if ((fd = open("/dev/urandom", O_RDONLY)) >= 0 && |
| 2516 | read(fd, buf, sizeof(buf)) == sizeof(buf)) { |
| 2517 | s = *((size_t *) buf); |
| 2518 | close(fd); |
| 2519 | } |
| 2520 | else |
| 2521 | #endif /* USE_DEV_RANDOM */ |
| 2522 | s = (size_t)(time(0) ^ (size_t)0x55555555U); |
| 2523 | |
| 2524 | s |= (size_t)8U; /* ensure nonzero */ |
| 2525 | s &= ~(size_t)7U; /* improve chances of fault for bad values */ |
| 2526 | |
| 2527 | } |
| 2528 | #else /* (FOOTERS && !INSECURE) */ |
| 2529 | s = (size_t)0x58585858U; |
| 2530 | #endif /* (FOOTERS && !INSECURE) */ |
| 2531 | ACQUIRE_MAGIC_INIT_LOCK(); |
| 2532 | if (mparams.magic == 0) { |
| 2533 | mparams.magic = s; |
| 2534 | /* Set up lock for main malloc area */ |
| 2535 | INITIAL_LOCK(&gm->mutex); |
| 2536 | gm->mflags = mparams.default_mflags; |
| 2537 | } |
| 2538 | RELEASE_MAGIC_INIT_LOCK(); |
| 2539 | |
| 2540 | #ifndef WIN32 |
| 2541 | mparams.page_size = malloc_getpagesize; |
| 2542 | mparams.granularity = ((DEFAULT_GRANULARITY != 0)? |
| 2543 | DEFAULT_GRANULARITY : mparams.page_size); |
| 2544 | #else /* WIN32 */ |
| 2545 | { |
| 2546 | SYSTEM_INFO system_info; |
| 2547 | GetSystemInfo(&system_info); |
| 2548 | mparams.page_size = system_info.dwPageSize; |
| 2549 | mparams.granularity = system_info.dwAllocationGranularity; |
| 2550 | } |
| 2551 | #endif /* WIN32 */ |
| 2552 | |
| 2553 | /* Sanity-check configuration: |
no outgoing calls
no test coverage detected