003-no-mallinfo.patch (1209B)
1 --- a/lib/mm/memlock.c 2 +++ b/lib/mm/memlock.c 3 @@ -174,12 +174,15 @@ static void _allocate_memory(void) 4 * memory on free(), this is good enough for our purposes. 5 */ 6 while (missing > 0) { 7 +#ifdef __GLIBC__ 8 struct mallinfo inf = mallinfo(); 9 hblks = inf.hblks; 10 +#endif 11 12 if ((areas[area] = malloc(_size_malloc_tmp))) 13 _touch_memory(areas[area], _size_malloc_tmp); 14 15 +#ifdef __GLIBC__ 16 inf = mallinfo(); 17 18 if (hblks < inf.hblks) { 19 @@ -189,9 +192,12 @@ static void _allocate_memory(void) 20 free(areas[area]); 21 _size_malloc_tmp /= 2; 22 } else { 23 +#endif 24 ++ area; 25 missing -= _size_malloc_tmp; 26 +#ifdef __GLIBC__ 27 } 28 +#endif 29 30 if (area == max_areas && missing > 0) { 31 /* Too bad. Warn the user and proceed, as things are 32 @@ -480,8 +486,13 @@ static void _lock_mem(struct cmd_context 33 * will not block memory locked thread 34 * Note: assuming _memlock_count_daemon is updated before _memlock_count 35 */ 36 +#ifdef __GLIBC__ 37 _use_mlockall = _memlock_count_daemon ? 1 : 38 find_config_tree_bool(cmd, activation_use_mlockall_CFG, NULL); 39 +#else 40 + /* always use mlockall on musl */ 41 + _use_mlockall = 1; 42 +#endif 43 44 if (!_use_mlockall) { 45 if (!*_procselfmaps &&