linux/tools/testing/selftests/bpf/progs/freplace_attach_probe.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2// Copyright (c) 2020 Facebook
   3
   4#include <linux/ptrace.h>
   5#include <linux/bpf.h>
   6#include <bpf/bpf_helpers.h>
   7#include <bpf/bpf_tracing.h>
   8
   9#define VAR_NUM 2
  10
  11struct hmap_elem {
  12        struct bpf_spin_lock lock;
  13        int var[VAR_NUM];
  14};
  15
  16struct {
  17        __uint(type, BPF_MAP_TYPE_HASH);
  18        __uint(max_entries, 1);
  19        __type(key, __u32);
  20        __type(value, struct hmap_elem);
  21} hash_map SEC(".maps");
  22
  23SEC("freplace/handle_kprobe")
  24int new_handle_kprobe(struct pt_regs *ctx)
  25{
  26        struct hmap_elem zero = {}, *val;
  27        int key = 0;
  28
  29        val = bpf_map_lookup_elem(&hash_map, &key);
  30        if (!val)
  31                return 1;
  32        /* spin_lock in hash map */
  33        bpf_spin_lock(&val->lock);
  34        val->var[0] = 99;
  35        bpf_spin_unlock(&val->lock);
  36
  37        return 0;
  38}
  39
  40char _license[] SEC("license") = "GPL";
  41