162306a36Sopenharmony_ci/* SPDX-License-Identifier: LGPL-2.1 */ 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci#include "util/debug.h" 462306a36Sopenharmony_ci#include "util/rlimit.h" 562306a36Sopenharmony_ci#include <sys/time.h> 662306a36Sopenharmony_ci#include <sys/resource.h> 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci/* 962306a36Sopenharmony_ci * Bump the memlock so that we can get bpf maps of a reasonable size, 1062306a36Sopenharmony_ci * like the ones used with 'perf trace' and with 'perf test bpf', 1162306a36Sopenharmony_ci * improve this to some specific request if needed. 1262306a36Sopenharmony_ci */ 1362306a36Sopenharmony_civoid rlimit__bump_memlock(void) 1462306a36Sopenharmony_ci{ 1562306a36Sopenharmony_ci struct rlimit rlim; 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci if (getrlimit(RLIMIT_MEMLOCK, &rlim) == 0) { 1862306a36Sopenharmony_ci rlim.rlim_cur *= 4; 1962306a36Sopenharmony_ci rlim.rlim_max *= 4; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci if (setrlimit(RLIMIT_MEMLOCK, &rlim) < 0) { 2262306a36Sopenharmony_ci rlim.rlim_cur /= 2; 2362306a36Sopenharmony_ci rlim.rlim_max /= 2; 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci if (setrlimit(RLIMIT_MEMLOCK, &rlim) < 0) 2662306a36Sopenharmony_ci pr_debug("Couldn't bump rlimit(MEMLOCK), failures may take place when creating BPF maps, etc\n"); 2762306a36Sopenharmony_ci } 2862306a36Sopenharmony_ci } 2962306a36Sopenharmony_ci} 30