brintos

brintos / linux-shallow public Read only

0
0
Text · 1.1 KiB · 58b9cf7 Raw
44 lines · c
1/* Copyright (c) 2016 Sargun Dhillon <sargun@sargun.me>2 *3 * This program is free software; you can redistribute it and/or4 * modify it under the terms of version 2 of the GNU General Public5 * License as published by the Free Software Foundation.6 */7 8#include "vmlinux.h"9#include <linux/version.h>10#include <bpf/bpf_helpers.h>11#include <bpf/bpf_tracing.h>12#include <bpf/bpf_core_read.h>13 14struct {15	__uint(type, BPF_MAP_TYPE_CGROUP_ARRAY);16	__uint(key_size, sizeof(u32));17	__uint(value_size, sizeof(u32));18	__uint(max_entries, 1);19} cgroup_map SEC(".maps");20 21struct {22	__uint(type, BPF_MAP_TYPE_ARRAY);23	__type(key, u32);24	__type(value, u64);25	__uint(max_entries, 1);26} perf_map SEC(".maps");27 28/* Writes the last PID that called sync to a map at index 0 */29SEC("ksyscall/sync")30int BPF_KSYSCALL(bpf_prog1)31{32	u64 pid = bpf_get_current_pid_tgid();33	int idx = 0;34 35	if (!bpf_current_task_under_cgroup(&cgroup_map, 0))36		return 0;37 38	bpf_map_update_elem(&perf_map, &idx, &pid, BPF_ANY);39	return 0;40}41 42char _license[] SEC("license") = "GPL";43u32 _version SEC("version") = LINUX_VERSION_CODE;44