1*120f1a95SAmery Hung // SPDX-License-Identifier: GPL-2.0 2*120f1a95SAmery Hung 3*120f1a95SAmery Hung #include <vmlinux.h> 4*120f1a95SAmery Hung #include <errno.h> 5*120f1a95SAmery Hung #include <bpf/bpf_helpers.h> 6*120f1a95SAmery Hung 7*120f1a95SAmery Hung #include "task_local_data.bpf.h" 8*120f1a95SAmery Hung 9*120f1a95SAmery Hung struct tld_keys { 10*120f1a95SAmery Hung tld_key_t value0; 11*120f1a95SAmery Hung tld_key_t value1; 12*120f1a95SAmery Hung tld_key_t value2; 13*120f1a95SAmery Hung tld_key_t value_not_exist; 14*120f1a95SAmery Hung }; 15*120f1a95SAmery Hung 16*120f1a95SAmery Hung struct test_tld_struct { 17*120f1a95SAmery Hung __u64 a; 18*120f1a95SAmery Hung __u64 b; 19*120f1a95SAmery Hung __u64 c; 20*120f1a95SAmery Hung __u64 d; 21*120f1a95SAmery Hung }; 22*120f1a95SAmery Hung 23*120f1a95SAmery Hung int test_value0; 24*120f1a95SAmery Hung int test_value1; 25*120f1a95SAmery Hung struct test_tld_struct test_value2; 26*120f1a95SAmery Hung 27*120f1a95SAmery Hung SEC("syscall") 28*120f1a95SAmery Hung int task_main(void *ctx) 29*120f1a95SAmery Hung { 30*120f1a95SAmery Hung struct tld_object tld_obj; 31*120f1a95SAmery Hung struct test_tld_struct *struct_p; 32*120f1a95SAmery Hung struct task_struct *task; 33*120f1a95SAmery Hung int err, *int_p; 34*120f1a95SAmery Hung 35*120f1a95SAmery Hung task = bpf_get_current_task_btf(); 36*120f1a95SAmery Hung err = tld_object_init(task, &tld_obj); 37*120f1a95SAmery Hung if (err) 38*120f1a95SAmery Hung return 1; 39*120f1a95SAmery Hung 40*120f1a95SAmery Hung int_p = tld_get_data(&tld_obj, value0, "value0", sizeof(int)); 41*120f1a95SAmery Hung if (int_p) 42*120f1a95SAmery Hung test_value0 = *int_p; 43*120f1a95SAmery Hung else 44*120f1a95SAmery Hung return 2; 45*120f1a95SAmery Hung 46*120f1a95SAmery Hung int_p = tld_get_data(&tld_obj, value1, "value1", sizeof(int)); 47*120f1a95SAmery Hung if (int_p) 48*120f1a95SAmery Hung test_value1 = *int_p; 49*120f1a95SAmery Hung else 50*120f1a95SAmery Hung return 3; 51*120f1a95SAmery Hung 52*120f1a95SAmery Hung struct_p = tld_get_data(&tld_obj, value2, "value2", sizeof(struct test_tld_struct)); 53*120f1a95SAmery Hung if (struct_p) 54*120f1a95SAmery Hung test_value2 = *struct_p; 55*120f1a95SAmery Hung else 56*120f1a95SAmery Hung return 4; 57*120f1a95SAmery Hung 58*120f1a95SAmery Hung int_p = tld_get_data(&tld_obj, value_not_exist, "value_not_exist", sizeof(int)); 59*120f1a95SAmery Hung if (int_p) 60*120f1a95SAmery Hung return 5; 61*120f1a95SAmery Hung 62*120f1a95SAmery Hung return 0; 63*120f1a95SAmery Hung } 64*120f1a95SAmery Hung 65*120f1a95SAmery Hung char _license[] SEC("license") = "GPL"; 66