GNU Linux-libre 4.19.286-gnu1
[releases.git] / tools / testing / selftests / bpf / bpf_rlimit.h
1 #include <sys/resource.h>
2 #include <stdio.h>
3
4 static  __attribute__((constructor)) void bpf_rlimit_ctor(void)
5 {
6         struct rlimit rlim_old, rlim_new = {
7                 .rlim_cur       = RLIM_INFINITY,
8                 .rlim_max       = RLIM_INFINITY,
9         };
10
11         getrlimit(RLIMIT_MEMLOCK, &rlim_old);
12         /* For the sake of running the test cases, we temporarily
13          * set rlimit to infinity in order for kernel to focus on
14          * errors from actual test cases and not getting noise
15          * from hitting memlock limits. The limit is on per-process
16          * basis and not a global one, hence destructor not really
17          * needed here.
18          */
19         if (setrlimit(RLIMIT_MEMLOCK, &rlim_new) < 0) {
20                 perror("Unable to lift memlock rlimit");
21                 /* Trying out lower limit, but expect potential test
22                  * case failures from this!
23                  */
24                 rlim_new.rlim_cur = rlim_old.rlim_cur + (1UL << 20);
25                 rlim_new.rlim_max = rlim_old.rlim_max + (1UL << 20);
26                 setrlimit(RLIMIT_MEMLOCK, &rlim_new);
27         }
28 }