| #include <sys/resource.h> | |
| #include <stdio.h> | |
| static __attribute__((constructor)) void bpf_rlimit_ctor(void) | |
| { | |
| struct rlimit rlim_old, rlim_new = { | |
| .rlim_cur = RLIM_INFINITY, | |
| .rlim_max = RLIM_INFINITY, | |
| }; | |
| getrlimit(RLIMIT_MEMLOCK, &rlim_old); | |
| /* For the sake of running the test cases, we temporarily | |
| * set rlimit to infinity in order for kernel to focus on | |
| * errors from actual test cases and not getting noise | |
| * from hitting memlock limits. The limit is on per-process | |
| * basis and not a global one, hence destructor not really | |
| * needed here. | |
| */ | |
| if (setrlimit(RLIMIT_MEMLOCK, &rlim_new) < 0) { | |
| perror("Unable to lift memlock rlimit"); | |
| /* Trying out lower limit, but expect potential test | |
| * case failures from this! | |
| */ | |
| rlim_new.rlim_cur = rlim_old.rlim_cur + (1UL << 20); | |
| rlim_new.rlim_max = rlim_old.rlim_max + (1UL << 20); | |
| setrlimit(RLIMIT_MEMLOCK, &rlim_new); | |
| } | |
| } |