tools/testing/selftests/bpf/progs/cgrp_ls_sleepable.c

Source file repositories/reference/linux-study-clean/tools/testing/selftests/bpf/progs/cgrp_ls_sleepable.c

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/bpf/progs/cgrp_ls_sleepable.c
Extension
.c
Size
3183 bytes
Lines
144
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: implementation source
Status
source implementation candidate

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

if (!cgrp) {
			bpf_rcu_read_unlock();
			return 0;
		}

		ptr = bpf_cgrp_storage_get(&map_a, cgrp, 0, BPF_LOCAL_STORAGE_GET_F_CREATE);
		if (ptr)
			cgroup_id = cgrp->kn->id;
		bpf_cgroup_release(cgrp);
		bpf_rcu_read_unlock();
		return 0;
	}

	bpf_rcu_read_lock();
	cgrp = task->cgroups->dfl_cgrp;
	/* cgrp is trusted under RCU CS */
	ptr = bpf_cgrp_storage_get(&map_a, cgrp, 0, BPF_LOCAL_STORAGE_GET_F_CREATE);
	if (ptr)
		cgroup_id = cgrp->kn->id;
	bpf_rcu_read_unlock();
	return 0;
}

SEC("fexit/bpf_local_storage_update")
int BPF_PROG(fexit_update, void *owner, struct bpf_local_storage_map *smap,
	     void *value, u64 map_flags, bool swap_uptrs,
	     struct bpf_local_storage_data *ret)
{
	struct task_struct *task = bpf_get_current_task_btf();

	if (task->pid != target_pid)
		return 0;

	if (IS_ERR_VALUE(ret))
		update_err = PTR_ERR(ret);

	return 0;
}

Annotation

Implementation Notes