Linux Audio

Check our new training course

Loading...
v6.13.7
 1// SPDX-License-Identifier: GPL-2.0-only
 2/* Copyright (c) 2020 Facebook */
 3#include <stddef.h>
 4#include <linux/bpf.h>
 5#include <bpf/bpf_helpers.h>
 6#include "bpf_misc.h"
 7
 8__attribute__ ((noinline))
 9int f1(struct __sk_buff *skb)
10{
11	return skb->len;
12}
13
14__attribute__ ((noinline))
15int f2(int val, struct __sk_buff *skb)
16{
17	return f1(skb) + val;
18}
19
20__attribute__ ((noinline))
21int f3(int val, struct __sk_buff *skb, int var)
22{
23	return f2(var, skb) + val;
24}
25
26__attribute__ ((noinline))
27int f4(struct __sk_buff *skb)
28{
29	return f3(1, skb, 2);
30}
31
32__attribute__ ((noinline))
33int f5(struct __sk_buff *skb)
34{
35	return f4(skb);
36}
37
38__attribute__ ((noinline))
39int f6(struct __sk_buff *skb)
40{
41	return f5(skb);
42}
43
44__attribute__ ((noinline))
45int f7(struct __sk_buff *skb)
46{
47	return f6(skb);
48}
49
50SEC("tc")
51__success
52int global_func4(struct __sk_buff *skb)
53{
54	return f7(skb);
55}
v6.8
 1// SPDX-License-Identifier: GPL-2.0-only
 2/* Copyright (c) 2020 Facebook */
 3#include <stddef.h>
 4#include <linux/bpf.h>
 5#include <bpf/bpf_helpers.h>
 6#include "bpf_misc.h"
 7
 8__attribute__ ((noinline))
 9int f1(struct __sk_buff *skb)
10{
11	return skb->len;
12}
13
14__attribute__ ((noinline))
15int f2(int val, struct __sk_buff *skb)
16{
17	return f1(skb) + val;
18}
19
20__attribute__ ((noinline))
21int f3(int val, struct __sk_buff *skb, int var)
22{
23	return f2(var, skb) + val;
24}
25
26__attribute__ ((noinline))
27int f4(struct __sk_buff *skb)
28{
29	return f3(1, skb, 2);
30}
31
32__attribute__ ((noinline))
33int f5(struct __sk_buff *skb)
34{
35	return f4(skb);
36}
37
38__attribute__ ((noinline))
39int f6(struct __sk_buff *skb)
40{
41	return f5(skb);
42}
43
44__attribute__ ((noinline))
45int f7(struct __sk_buff *skb)
46{
47	return f6(skb);
48}
49
50SEC("tc")
51__success
52int global_func4(struct __sk_buff *skb)
53{
54	return f7(skb);
55}