hc
2024-08-16 a24a44ff9ca902811b99aa9663d697cf452e08ef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#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);
   }
}