Helper function bpf_get_current_pid_tgid
Definition
Copyright (c) 2015 The Libbpf Authors. All rights reserved.
Get the current pid and tgid.
Returns
A 64-bit integer containing the current tgid and pid, and created as such: current_task->tgid << 32 | current_task->pid.
static __u64 (* const bpf_get_current_pid_tgid)(void) = (void *) 14;
Usage
The bpf_get_current_pid_tgid
helper function returns a 64-bit value containing the current task's PID in the lower 32 bits and TGID (thread group ID) in the upper 32 bits. This helper allows eBPF programs to identify the process and its thread group, which is useful for tracking individual threads or entire processes, enforcing thread-specific policies.
Program types
This helper call can be used in the following program types:
BPF_PROG_TYPE_CGROUP_DEVICE
v6.10BPF_PROG_TYPE_CGROUP_SKB
v6.10BPF_PROG_TYPE_CGROUP_SOCK
BPF_PROG_TYPE_CGROUP_SOCKOPT
v6.10BPF_PROG_TYPE_CGROUP_SOCK_ADDR
BPF_PROG_TYPE_CGROUP_SYSCTL
v6.10BPF_PROG_TYPE_FLOW_DISSECTOR
v6.10BPF_PROG_TYPE_KPROBE
BPF_PROG_TYPE_LSM
BPF_PROG_TYPE_LWT_IN
v6.10BPF_PROG_TYPE_LWT_OUT
v6.10BPF_PROG_TYPE_LWT_SEG6LOCAL
v6.10BPF_PROG_TYPE_LWT_XMIT
v6.10BPF_PROG_TYPE_NETFILTER
v6.10BPF_PROG_TYPE_PERF_EVENT
BPF_PROG_TYPE_RAW_TRACEPOINT
BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE
BPF_PROG_TYPE_SCHED_ACT
v6.10BPF_PROG_TYPE_SCHED_CLS
v6.10BPF_PROG_TYPE_SK_LOOKUP
v6.10BPF_PROG_TYPE_SK_MSG
BPF_PROG_TYPE_SK_REUSEPORT
v6.10BPF_PROG_TYPE_SK_SKB
v6.10BPF_PROG_TYPE_SOCKET_FILTER
v6.10BPF_PROG_TYPE_SOCK_OPS
v6.10BPF_PROG_TYPE_STRUCT_OPS
v6.10BPF_PROG_TYPE_SYSCALL
BPF_PROG_TYPE_TRACEPOINT
BPF_PROG_TYPE_TRACING
BPF_PROG_TYPE_XDP
v6.10
Example
#include <vmlinux.h>
#include <bpf/bpf_helpers.h>
SEC("tp/syscalls/sys_enter_open")
int sys_open_trace(void *ctx) {
__u64 pid_tgid = bpf_get_current_pid_tgid();
__u32 pid = pid_tgid >> 32;
__u32 tgid = pid_tgid & 0xFFFFFFFF;
bpf_printk("Hello from PID %u, TGID %u\n", pid, tgid);
return 0;
}